gpt4 book ai didi

c - 在 C 中读取文本文件并将其内容打印到屏幕

转载 作者:行者123 更新时间:2023-12-02 05:36:42 25 4
gpt4 key购买 nike

我正在编写一个读取给定文件并将其内容打印到屏幕的函数。目前我有以下内容:

int textdump(const char *filename)
{
int n = 0;
char ch;
FILE *fileHandle;
fileHandle = fopen(filename, "r");
if ((fileHandle = fopen(filename, "r")) == NULL)
{
return -1;
fclose(fileHandle);
}
while ((ch = fgetc(fileHandle) != EOF) )
{
printf("%c", ch);
n++;
}

fclose(fileHandle);
if (fclose(fileHandle) == EOF)
{
return EXIT_FAILURE;
}
return n;
}

函数成功读取文本文件,并正确返回每个文件的字符数。但后来我尝试打印字符,现在我什至无法运行程序 - 我得到“运行失败 - 文档不能为空,无法解析测试结果”。

最佳答案

总结上面代码的问题,

  • 在您的代码中,为什么要执行两次 fopen()/fclose()?摆脱那部分。 --------------(1)
  • 您不需要 fclose() 尚未打开的内容。 ----------------------------------------------(2)
  • return 之后的所有语句均无效。 ---------------------------------------------- ----(3)
  • 照顾operator precedence在使用 fgetc() 时。 ----------------------------------------(4)
  • fgetc()返回 int 值。相应地改变。 ----------------------------------------------(5)

所以,你的代码看起来像

int textdump(const char *filename)
{
int n = 0;
int ch = 0;
FILE *fileHandle = NULL;
//fileHandle = fopen(filename, "r"); //not reqd --- (1)
if ((fileHandle = fopen(filename, "r")) == NULL){
return -1;
//fclose(fileHandle); // not reqd --- (2), (3)
}
while ( (ch = fgetc(fileHandle)) != EOF ){ //notice here -- (4), (5)
printf("%c", ch);
n++;
}

fclose(fileHandle);
/*
if(fclose(fileHandle) == EOF){ -- (1)
return EXIT_FAILURE;
}*/
return n;
}

关于c - 在 C 中读取文本文件并将其内容打印到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29745907/

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