0

データを char[][] 配列に収集してから、ファイルに書き込む文字列をユーザーに選択させます。だから私は例えばやっている

char arr[3][3]; // assume there are three different two-char long strings in there
FILE* f = fopen("file", "w");
fputs(arr[1], f);
fclose(f);

問題は、呼び出しでセグメンテーション違反が発生し、そのfputs()理由がわからないことです。

何か案は?

4

5 に答える 5

2

によって返されるファイル ポインタfopenが NULL でないことを確認してください。有効な 0 で終わる文字列が含まれていると仮定arrすると、それが原因であると私が考えることができる唯一の他のことですfputs

于 2011-08-31T15:10:44.580 に答える
1
  1. fputs-終了する\0文字列が必要です。0そこに指定する文字列の最後に必ず追加してください。または、を使用しますfwrite

  2. f != NULL後で確認してくださいfopen

于 2011-08-31T14:52:18.610 に答える
0

arr は何を指していますか? 問題は arr が初期化されていないことが原因だと思います。

于 2011-08-31T14:51:03.357 に答える
0

が指す char 配列arr[1]は、おそらく null で終了していません。arras として宣言しchar arr[3][4];、最後の列を'\0'(null) 文字で埋める必要があります。

于 2011-08-31T14:51:27.770 に答える
0

ファイルポインタによって返される値を確認する必要があるかもしれません!

于 2011-08-31T15:19:54.327 に答える