我复制了一些代码,这些代码只是将文件读取到字符串并从旧程序打印字符串。它工作正常,所以我决定对其进行一些修改。新程序是
#include <stdio.h>
#include <string.h>
int main() {
FILE *itemlist = fopen("itemlist", "r");
char *currentstring, charbuffer[2];
// char itemstart = 0;
while (fgets(charbuffer, 2, itemlist)) {
strcat(currentstring, charbuffer);
}
printf("%s", currentstring);
return 0;
}
它按预期工作。但是当我取消注释该itemstart
行时,它会出现分段错误。我什至没有使用它,就我而言,将 char 初始化为 0 并不违法。我认为这是类型的问题,然后我将其更改为 short ,然后更改为 int ,它仍然给出段错误。
但后来我删除了这= 0
部分,它又开始工作了。然后我决定把它放回去,用 gdb 调试二进制文件,段错误在strcat
.
这怎么可能?