c - C : 访问冲突读取位置 0x00000044
问题描述
我有一个标题为 [what],[where],[who] 的文件,我将它放入一个数组列表中。我正在尝试将括号和单词数组连接在一起。像 [what] 但会弹出错误。
“在 project.exe 中的 0x0F20EDD0 (ucrtbased.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x00000044”
char intent[255];
char inv[3][10] = { "what","where","who" };
//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 是无意义的变量——它们只是指向意图。
您还可以更好地使用 strncat() 而不是 strcat() 来防止缓冲区溢出。
推荐阅读
- python - 为什么我的 Python 脚本在 Power Bi 中运行时表现不同
- reactjs - 无法将道具传递给 React Router 页面组件,TS2322
- python - 通过按下按钮添加按钮(带变量) - tkinter
- ios - 如何在 xcode 中构建科尔多瓦项目?
- html - 无法绑定到“ndcDynamicInputs”,因为它不是“ndc-dynamic”的已知属性
- typescript - 为什么直接对象发生时对象变量不会引发错误
- python - 如何为 matplotlib plot_trisurf 中的单个元素着色
- javascript - 带有字符串值和 *ngIf 的 Angular 表单
- json - 将请求快速发布到 json 本地文件
- mysql - 对本机函数“str_to_date”的调用中的参数计数不正确