1
我正在用C編寫一個非常簡單的文件讀/寫程序。當我嘗試測試代碼時,輸出結果不是我所期望的。這裏是我的代碼:如何在C中修復簡單文件讀/寫程序的輸出?
#include <stdio.h>
void hwrite(FILE *fp, int count, char *str) {
fprintf(fp, "%d ""%s", count, str);
}
void hread(FILE *fp) {
if(fp != NULL) {
char line [128];
while(fgets(line, sizeof line, fp) != NULL) {
fputs(line, stdout);
}
fclose(fp);
}
else {
perror("xxx.txt");
}
}
int main(void) {
int count = 1;
char *str = "test text\n";
FILE *fp;
fp = fopen("xxx.txt", "a");
int i;
for (i = 0; i < 3; i++) {
hwrite(fp, count, str);
count = count+1;
}
fp = fopen("xxx.txt", "r");
hread(fp);
return 0;
}
該程序編譯沒有問題。然後我執行一次a.out命令並且沒有輸出。我做了第二次,並有一個輸出,但它不完整。在這裏:
[xxxxx xxx]> a.out
[xxxxx xxx]> a.out
1 test text
2 test text
3 test text
然後我打開找到這個文件:
1 test text
2 test text
3 test text
1 test text
2 test text
3 test text
爲什麼不顯示在輸出?謝謝你的時間。
我想這個,它編譯,但是當我嘗試運行它的內存映射出現。編輯:沒關係,我不小心叫了兩次fclose。有用。謝謝 –