我制作了一个非常简单的程序,可以从文本文件中读取并打印内容。当文件完成编译时,我不断收到这个调试断言失败的消息!
我以前从未见过,似乎无法找到任何解决方案。
(它不会让我发布图片,因为我的代表不够高!)
代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file = fopen("C:\\Users\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r");
char c;
do
{
c = fgetc(file);
printf("%c", c);
}
while(c != EOF);
fclose(file);
return 0;
printf("\n\n\n");
system("pause");
}
答案 0 :(得分:1)
使用调试器逐步执行代码以查找导致调试断言的行,并检查文件是否已打开。
在第
行FILE *file = fopen("C:\\Users\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r");
看起来你错过了一个&#39; \&#39;之前&#39; Kyne&#39;所以它应该是
FILE *file = fopen("C:\\Users\\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r");
还有其他问题,例如在主要块结束前调用return 0;
。
答案 1 :(得分:0)
我没有看到任何检查文件是否正确打开。另外,我会在第一次阅读之前检查EOF标记 - 改为使用while
和feof()。最后,这些界限:
printf("\n\n\n");
system("pause");
永远不会被调用,就像你return 0
之后fclose()
一样 - 将它[return 0
]移到最后。
试试这个:
int main()
{
FILE *file = fopen("C:\\Users\\Kyne\\Desktop\\AdvProgrammingAssignment\\employees.txt", "r");
if(!file)
{
printf("File could not be opened!\n");
return -1;
}
while(!feof(file))
{
char c = fgetc(file);
printf("%c", c);
}
fclose(file);
printf("\n\n\n");
system("pause");
return 0;
}
很有可能,您的错误源于使用设置为FILE*
的{{1}} - NULL
后您丢失了一个斜线,因此文件可能永远不会打开而且\\Users
一直是返回fopen()
。