我有一个标题为[what],[where],[who]的文件,并将其放入数组列表。我试图将方括号和单词数组连接在一起。像[什么],但会弹出错误。
“在project.exe中的0x0F20EDD0(ucrtbased.dll)处引发异常:0xC0000005:访问冲突读取位置0x00000044”
char intent;
char inv[3][10] = { "what","where","who" };
intent = '[';
intent = ']';
//char stringCat = strncat(intent, inv[0],10);
snprintf(intent, sizeof(intent), "[%s]", inv[0]);
我知道为什么会这样吗?
intent [0]是一个字符,而不是一个字符*。 strcat将追加到第一个参数所指向的char *的末尾,因此会出现错误。更改为strcat(intent,inv [0])将解决此直接问题,但是代码仍然是错误的。
您需要将字符串以nil结尾,因此在strcat()之前需要intent [1] ='\ 0'。
strcat也只是写到意图的末尾,所以stringCat和totalCat是无意义的变量,它们只是指向意图。
与strcat()相比,使用strncat()来防止缓冲区溢出也要好得多。