バイナリ形式のファイルにユーザー入力を書き込もうとしています。 バイナリ形式でファイルに書き込むときに出力が正しくない
FILE *f;
char array[8];
f = fopen("numbers.bin", "ab+");
if(f==NULL){
printf("Could not open file!\n");
system("pause");
exit(1);
}
for(i=0;i<numberOfInputs;i++){
printf("\nEnter number nr %i:", i+1);
gets(array); //get the input and place it in array
strcat(array, "\n"); // add a newline to the input
fwrite(array,sizeof(char),1,f); //write output to the file
}
は何イムを発見することができ、誰もがここで間違ってやっている
:私は0と1のを見て期待したファイルイムを見ると、そのファイルへの出力は通常のテキストで印刷されていますか?
「0と1だけ」が必要ですか?あなたは何をしようとしているのですか?ユーザが数字(整数、正確には)を入力し、これらを(OS依存の)バイナリ形式で追加する必要がありますか?または、改行文字をそのまま文字列に追加したいですか? –
getsを使用しないでください。あなたのファイルに8文字以上の行がある場合は、バッファオーバーフローが発生しています。 –
バッファオーバーフローの理由で、現在のバージョンの標準(C11)がリリースされたときに、最近gets()がC言語から削除されました。 gets()を使用するプログラムは、将来のCコンパイラではコンパイルされません。 – Lundin