1

嗨,我有以下代码

#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 中运行代码时,我收到以下消息

“调试断言失败!程序:E:\Programs\VSTS\14.1\Debug\14.1exe 文件:f:\dd\vctool\crt_bld\self_X86\crt\src\feoferr.c 行:44

表达式(流!=NULL)“

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

4

1 回答 1

0

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

您需要检查返回值。

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

看起来像你的电话之一feof

于 2013-11-14T03:21:15.463 回答