【问题标题】:Debug Assertion Failed and Expression(stream!=NULL) is displayed in VSTS2010调试断言失败,VSTS2010显示Expression(stream!=NULL)
【发布时间】:2013-11-14 03:11:25
【问题描述】:

您好,我有以下代码

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char c;
    printf("Contents of the file before appending:\n");
    fp=fopen("E:\Append.txt","r");

    while(!feof(fp))
    {
        c=fgetc(fp);
        printf("%c",c);
    }

    fp=fopen("E:\Append.txt","a");

    if(fp==NULL)
    {
        printf("The File cannot be appended");
        exit(1);
    }
    printf("Enter String to Append:");

    fp=fopen("E:\Append.txt","w");

    while(c!='.')
    {
        c=getche();
        fputc(c,fp);
    }
    fclose(fp);

    printf("Contents  of the file after Appending");

    fp=fopen("E:\Append.txt","r");

    while(!feof(fp))
    {
        c=fgetc(fp);
        printf("%c",c);
    }

}

但是当我尝试在 VSTS2010 中运行代码时,我收到以下消息

"Debug Assertion Failed! Program :E:\Programs\VSTS\14.1\Debug\14.1exe File:f:\dd\vctool\crt_bld\self_X86\crt\src\feoferr.c Line:44

表达式(流!=NULL)“

请帮助我出了什么问题。提前致谢。

【问题讨论】:

标签: c visual-studio-2010


【解决方案1】:

您没有检查任何fopen 调用的返回值。然后调用作用于文件流的函数,它们断言stream != NULL,但失败了。

您需要检查返回值。

fp = fopen(some_path);
if (!fp) {
    // error
}

看起来像是你给feof打的电话之一。

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    相关资源
    最近更新 更多