同じプログラムで "wor.txt"というファイルを作成し、書き込みストリームを閉じました。しかし、私は最初の実行(私はファイルを作成)でそれをアクセスしようとすると、セグメンテーションフォールトを与えるが、私はこのプログラムを再実行すると正常に実行されます。fgetc()セグメンテーションフォールトを作成する
自動的に生成されたファイルを削除してプログラムを再度実行すると、セグメンテーションフォールトが発生し、2回目に(ファイルを削除せずに)実行が再開されます。
注:テキストファイル内のデータは、それが空ではないので、あります(私は、ファイルマネージャでの最初の実行後にそれを見てきました)
FILE *fp1= fopen("wor.txt","r");
FILE *f1= fopen("wordsa.txt","ab+");
if((f1==NULL)||(f2==NULL)){
printf("f1 or f2 is null");
}
char c='0';
while((c)!=EOF){
printf("Here is one marker\n");
c=fgetc(fp1); //This Line gives error
printf("Here is another marker\n");
fputc(c,f1);
}
'f1 == NULL' - >' fp1 == NULL'です。あなたのコードが適切にフォーマットされていれば、あなた自身がこれを見ているでしょう。また、一貫した命名規則を使うべきです:両方の変数 'f1'と' f2'または 'fp1'と' fp2'を呼び出します。 –
'fp1 == NULL'を検出した後(少なくともあなたのコードで' f2'をチェックすると仮定します)、とにかく続行します –