调试断言失败VS2010

时间:2015-04-20 15:03:57

标签: c++ c visual-studio-2010 debugging assertion

我制作了一个非常简单的程序,可以从文本文件中读取并打印内容。当文件完成编译时,我不断收到这个调试断言失败的消息!

我以前从未见过,似乎无法找到任何解决方案。

(它不会让我发布图片,因为我的代表不够高!)

代码

#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");
}

2 个答案:

答案 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标记 - 改为使用whilefeof()。最后,这些界限:

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()