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

问题描述 投票:-1回答:1

我有一个标题为[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]);

我知道为什么会这样吗?

c arrays string concat
1个回答
0
投票

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

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

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

与strcat()相比,使用strncat()来防止缓冲区溢出也要好得多。

© www.soinside.com 2019 - 2024. All rights reserved.