ファイルを文字列に読み取り、古いプログラムから文字列を出力するコードをコピーしました。正常に動作していたので、少し変更することにしました。新しいプログラムは
#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でバイナリをデバッグすることにしました、そしてsegfaultはにありましたstrcat
。
これはどのように可能ですか?