我試圖以二進制格式將某些用戶輸入寫入文件。當我看到在文件IM希望看到只有0和1,而輸出到文件打印在普通文本:以二進制格式寫入文件時輸出錯誤
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」?!你想做什麼?用戶是否應該輸入數字(整數,更確切地說),並且希望以(與操作系統有關的)二進制格式附加這些數字?或者你想追加帶有換行符的字符串嗎? – 2012-03-09 14:27:46
不要使用gets。如果文件中有大於8個字符的行,則會發生緩衝區溢出。 – 2012-03-09 14:28:53
對於緩衝區溢出的原因,當標準(C11)的當前版本被釋放時,gets()最近從C語言中被移除。使用gets()的程序不會在將來的C編譯器上編譯。 – Lundin 2012-03-09 14:52:03