gpt4 book ai didi

c - 如何修复 C 中简单文件读/写程序的输出?

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:10 27 4
gpt4 key购买 nike

我正在用 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

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;
}
fclose(fp); /* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */
fp = fopen("xxx.txt", "r");
hread(fp);
return 0;
}

关于c - 如何修复 C 中简单文件读/写程序的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15752318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com