如何读取文件并在c中打印
Posted
技术标签:
【中文标题】如何读取文件并在c中打印【英文标题】:How to read a file and print it in c 【发布时间】:2021-12-26 12:47:12 【问题描述】:我正在尝试读取我附加的文件以及我的程序(源)的位置,但是我抛出了一个异常,我不明白为什么 我的文件有很多没有特殊字符的单词, 非常感谢帮助。
FILE* f;
char c;
f = fopen("dictionary.txt", "rt");
while ((c = fgetc(f)) != EOF)
printf("%c", c);
fclose(f);
她例外 while ((c = fgetc(f)) != EOF)
调试的信息是
表达式:stream.void() 有关程序如何导致断言失败的信息,请参阅有关断言的 c++ 文档。
【问题讨论】:
我预计文件未正确打开。使用前不检查文件指针是否有效。 旁白:char c;
应该是 int c;
,以便您可以区分 0xFF
和 EOF
。大多数库函数采用或返回一个“字符”作为int
而不是char
,实际上例如'A'
的类型为 int
。您可以使用printf("%c", c)
或printf("%d", c)
(用于字符或其编码),因为传递给%c
的char
无论如何都会被提升为int
(对于可变参数函数)。认为“字符”是char
,或者“数字”是int
,这是初学者的错误。
错误信息表明您使用的是 C++ 而不是 C。
如何解决
【参考方案1】:
需要检查返回值fopen()
文件是否打开成功
请注意,您需要包含 stdlib.h 才能使用 exit()
FILE* f;
int c;
if ((f = fopen("dictionary.txt", "r")) == NULL)
printf("error in opening a file");
exit(1);
while ((c = fgetc(f)) != EOF)
printf("%c", c);//printing to the console
fclose(f);
【讨论】:
消息是“打开文件时出错”问题出在哪里? 您是否手动检查文件是否存在并确保将正确的文件名称传递给 fopen() 是的,我检查了文件我找到了 driver.c 文件 此文本文件 (dictionary.txt) 是否存在于您当前的目录或文件夹中? @yovelde 他只在库中,然后我将其复制到源文件夹,他现在没有记录这些文件中没有再次出现异常“workhome4 中 0x79B3FC66 (ucrtbased.dll) 处的未处理异常.exe: 一个无效参数被传递给一个认为无效参数致命的函数。"以上是关于如何读取文件并在c中打印的主要内容,如果未能解决你的问题,请参考以下文章