调试断言失败 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 标记——改用 whilefeof()。最后,这些行:

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;等其他问题