Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:访问冲突读取位置0x00000044_C_Arrays_String_Concat - Fatal编程技术网

C:访问冲突读取位置0x00000044

C:访问冲突读取位置0x00000044,c,arrays,string,concat,C,Arrays,String,Concat,我有一个标题为[what]、[where]、[who]的文件,我将其放入数组列表中。 我试图将括号和单词数组连接在一起。喜欢[什么],但会弹出错误 “project.exe中0x0F20EDD0(ucrtbased.dll)处引发异常:0xC0000005:访问冲突读取位置0x00000044” 我能知道为什么会发生这种情况吗?意图[0]是字符,而不是字符*。strcat将附加到第一个参数中指向的char*的末尾,因此您将得到一个错误。更改为strcat(intent,inv[0])将解决这个直

我有一个标题为[what]、[where]、[who]的文件,我将其放入数组列表中。 我试图将括号和单词数组连接在一起。喜欢[什么],但会弹出错误

“project.exe中0x0F20EDD0(ucrtbased.dll)处引发异常:0xC0000005:访问冲突读取位置0x00000044”


我能知道为什么会发生这种情况吗?

意图[0]是字符,而不是字符*。strcat将附加到第一个参数中指向的char*的末尾,因此您将得到一个错误。更改为strcat(intent,inv[0])将解决这个直接的问题,但代码仍然是错误的

您需要字符串以零结尾,因此在strcat()之前需要intent[1]='\0'

strcat也只是写入到intent的末尾,所以stringCat和totalCat是无意义的变量——它们只是指向intent


您最好使用strncat()而不是strcat()来防止缓冲区溢出。

检查编译器警告。您至少有3种不同的警告类型:混合使用字符和字符指针,使用字符串文字而不是最突出的字符文字。
strcat
需要指针而不是字符<代码>意图[0]不是指针。
意图[0]=“[”
=>
意图[0]='['
如果你的编译器没有警告你这些不匹配,你需要找一个更好的编译器。你将永远无法用你正在使用的编译器学习C。嗨,我已经更改了上面的代码,但它仍然会给我错误。对不起,所以我没有使用intent[0]和intent[6],而是使用intent?这会被覆盖吗?不,strcat()添加到字符串的结尾。strcpy()写入指向的内存,strcat会找到终止的“\0”并开始写入。此外,如果是我写的,我会通过一个snprintf()调用完成这一切:snprintf(intent,sizeof(intent),“[%s]”,inv[0])您好,我已经更改了上面的代码,但它仍然给我错误。您已将意向声明更改为字符。它必须是字符数组。您不需要为其分配“[”或“]”字符——snprintf()正在为您执行所有这些操作。
char intent[255];
char inv[3][10] = { "what","where","who" };

//char stringCat = strncat(intent, inv[0],10);
snprintf(intent, sizeof(intent), "[%s]", inv[0]);