を書いて、私はファイルへの書き込みの問題を持っている、これはコードです:問題
#include <stdio.h>
int main(int argc,char* argv[])
{
if(argc!=2)
{
printf("\x1B[31mError::%s takes exactly one argument!\n\x1B[0m",argv[0]);
return 1;
}
char string[100];
FILE* file=fopen(argv[1],"w");
if(file==NULL)
{
printf("\x1B[31mFile is invalid!\x1B[0m\n");
return 1;
}
while(!feof(stdin))
{
scanf("%s",string);
fprintf(file,"%s\n",string);
}
fclose(file);
return 0;
}
私は、ファイルの文字(CTRL + Zの終わりを入力するまで、それはscanf関数での入力を取得し、ファイルに書き込む必要があります)、実行が終了すると、開いたファイルは空です。このコード構造もデテルの中で提案されています&デイテルの本「ここに何が間違っているのですか? また、私はscanf( "%[^ \ n]"、文字列)を実行すると、たぶん1単語の代わりにscanfで全体のフレーズを取ることができることを知りたいです プログラムは混乱してしまいます。私が何かを書くと、同じことを繰り返し書くループに入り、ファイルは17Gbのようになります。
while(!feof(fp))の使用は常に間違っています。 –
ctrl + Zは強制的にプロセスの実行を停止するSIGTSTPであり、データはファイルに保存されません。 – achal
eofキーがOSに基づいていないことが判明しました。これはCtrl + Dではなく、 ですが、なぜscanf( "%[^ \ n]"、文字列)が機能しないのか知りたいですか? –