调试断言失败 VS2010
Debug Assertion Failed VS2010
我正在制作一个非常简单的程序来读取文本文件并打印内容。当文件完成编译时,我不断收到此调试断言失败消息!
我以前从未见过,似乎找不到任何解决方案。
(它不会让我 post 图片,因为我的代表不够高!)
代码
#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");
}
如果文件打开正确,我没有看到任何检查。另外,我会在第一次阅读之前检查 EOF 标记——改用 while
和 feof()。最后,这些行:
printf("\n\n\n");
system("pause");
将永远不会被调用,就像您在 fclose()
之后 return 0
所做的那样 - 将它 [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*
设置为 NULL
- 您在 \Users
之后缺少一个斜杠,因此文件可能从未打开并且 fopen()
不断返回 NULL
.
使用调试器单步执行您的代码,找到导致调试断言的行,并检查文件是否已打开。
行中
FILE *file = fopen("C:\Users\Kyne\Desktop\AdvProgrammingAssignment\employees.txt", "r");
看来您在 'Kyne' 之前漏掉了一个“\”,所以应该是
FILE *file = fopen("C:\Users\Kyne\Desktop\AdvProgrammingAssignment\employees.txt", "r");
在主块结束前调用return 0;
等其他问题
我正在制作一个非常简单的程序来读取文本文件并打印内容。当文件完成编译时,我不断收到此调试断言失败消息!
我以前从未见过,似乎找不到任何解决方案。
(它不会让我 post 图片,因为我的代表不够高!)
代码
#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");
}
如果文件打开正确,我没有看到任何检查。另外,我会在第一次阅读之前检查 EOF 标记——改用 while
和 feof()。最后,这些行:
printf("\n\n\n");
system("pause");
将永远不会被调用,就像您在 fclose()
之后 return 0
所做的那样 - 将它 [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*
设置为 NULL
- 您在 \Users
之后缺少一个斜杠,因此文件可能从未打开并且 fopen()
不断返回 NULL
.
使用调试器单步执行您的代码,找到导致调试断言的行,并检查文件是否已打开。
行中
FILE *file = fopen("C:\Users\Kyne\Desktop\AdvProgrammingAssignment\employees.txt", "r");
看来您在 'Kyne' 之前漏掉了一个“\”,所以应该是
FILE *file = fopen("C:\Users\Kyne\Desktop\AdvProgrammingAssignment\employees.txt", "r");
在主块结束前调用return 0;
等其他问题