22:39有没有人能帮我解答一下这是什么情况?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include<stdio.h>
#include <string.h>
void strc(char* strDest, char* strSrc)
{
char temp[80], * p;
int i = 0;
strcpy(temp, strDest + 1);
for (p = strDest + 1; p <= strDest + strlen(strSrc); p++) *p = strSrc[i++];
*p = '\0'; strcat(strDest, temp);
}
int main()
{
int i; char a[80] = "Windows_xp,word_2003,VC_6.0";
for (i = 0; a[i] != '\0'; i++) if (a[i] == ',') strc(a + i, "Microsoft ");
puts(a);
}

运行结果及报错内容

错误(活动) E0167 "const char *" 类型的实参与 "char *" 类型的形参不兼容
错误 C2664 “void strc(char *,char *)”: 无法将参数 2 从“const char [11]”转换为“char *”

我的解答思路和尝试过的方法
我想要达到的结果

c语言c字符串了解一下,以及相关得初始化方式,const属性了解一下。
直接用数组你定义得那种,默认是const属性得字符串得,所以,你传参得方式使用修改改字符串,是不对的

img

测试用 gcc / g++.
gcc 无报错。
g++ 警告:

14:73: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
 for (i = 0; a[i] != '\0'; i++) if (a[i] == ',') strc(a + i, "Microsoft ");

但是都可以运行。运行结果:
Windows_xp,Microsoft word_2003,Microsoft VC_6.0