我正在尝试为文件打开运行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();
}
答案 0 :(得分:3)
调试断言失败可能是由fp1
为空引起的
如果文件无法打开,就会发生这种情况。
答案 1 :(得分:1)
更改
if (feof(fp1))
到
if (fp1 && !feof(fp1))
这是检查fopen()
的返回值。如果无法打开文件,它将返回NULL。
编辑:
- 检查文件是否与exe / binary目录在同一目录中。
- 检查您是否有权访问该文件。
醇>
答案 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
以指示错误。