gpt4 book ai didi

无法在C中读取文件文本文件

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

你好,我遇到了一个问题,我正在尝试解决问题并了解如何从文件中学习。我通过教程完成了这段代码,当我执行而不是学习我的文件并在控制台上写下类似 1 4 6 5 1 等的内容时。 .它只是垃圾邮件只有 0 0 0 0 0 0 0 然后重复如果你会告诉我问题出在哪里,那将是很好的感谢你的时间:)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define UNUSED(__ARG__) ((void)__ARG__)

int main(int argc, char** argv)
{
UNUSED(argc);
UNUSED(argv);

int i = 0;
FILE* x =fopen("cisla.txt","r");
fscanf(x,"%d",&i);
while (!feof (x))
{
printf("%d",i);
fscanf(x,"%d",&i);


}
fclose(x);


return 0;
}

最佳答案

不管这是什么教程,扔掉它。

首先,您需要检查您的文件操作是否成功,否则程序将盲目继续。 fopen 可能失败了。它在失败时返回 NULL,因此您可以检查它并使用 perror 获取错误消息.

FILE *x = fopen("cisla.txt","r");
if( x == NULL ) {
perror("Could not open the file");
exit(1);
}

然后,正如其他人提到的,you don't check for end of file .而是执行 IO 操作并检查它是成功还是失败。在这种情况下,fscanf 返回应为 1 的匹配项目数。

while ( fscanf(x, "%d", &i) == 1 ) {
printf("%d",i);
}

请注意 the scanf family is fraught with gotchas .但您稍后会接触到它们。

最后,UNUSED 东西非常聪明,完全没有必要。只需声明 main 即可,不带任何参数。 This is perfectly valid .

int main() {

关于无法在C中读取文件文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54597606/

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