C中文件操作期间的运行时错误

时间:2015-01-28 05:39:11

标签: c file

我正在尝试为文件打开运行C代码,每当我这样做时,我都会收到调试断言失败的消息。

这是我的代码:

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

void main()
{
    FILE *fp1;
    printf("program to demonstrate file operations");
    fp1 = fopen("try1.txt","r");
    if (feof(fp1))
    {
        printf("Yes");
    }
    else 
        printf("No");

    printf("%f",fp1);

    getchar();
}

5 个答案:

答案 0 :(得分:3)

调试断言失败可能是由fp1为空引起的 如果文件无法打开,就会发生这种情况。

答案 1 :(得分:1)

更改

if (feof(fp1))

if (fp1 && !feof(fp1))

这是检查fopen()的返回值。如果无法打开文件,它将返回NULL。

编辑:

  
      
  1. 检查文件是否与exe / binary目录在同一目录中。
  2.   
  3. 检查您是否有权访问该文件。
  4.   

答案 2 :(得分:0)

检查

的返回值
 fp1 = fopen("try1.txt","r");

第一。在继续下一步之前,检查所有标准功能的返回值(具有适当的返回值)是可行的。在这种情况下&#34; fp1&#34;不应该是NULL。请检查文件位置或检查当前目录中是否存在文件。

答案 3 :(得分:0)

尝试检查文件是否正确打开
使用if条件检查if(fp == NULL)

如果fp == NULL为true,则表示文件未正确打开

答案 4 :(得分:0)

feof()上使用fp之前 确保fopen()成功。

#include <string.h>   /* For strerror() */
#include <errno.h>    /* For errno  */
#include <stdlib.h>   /* For exit() */

fp = fopen ("FaultyFile.txt", "r");

/* Add Error-checking */             
if (NULL == fp)                          
{
    printf ("Error No : [%d]\n", errno);
    printf ("Error Msg: [%s]\n", strerror(errno));
    exit (EXIT_FAILURE);          
}                               

来自man(3) fopen
返回值:成功fopen()后返回FILE指针。否则,将返回NULL并设置errno以指示错误。