读书人

【帮帮小弟我啊】读取文件程序总是出错

发布时间: 2012-02-05 12:07:14 作者: rapoo

【帮帮我啊!】读取文件程序总是出错!
本人编写了一个读取文本文件内容的练习小程序,代码如下:
#include "iostream.h "
#include "stdio.h "
#include "stdlib.h "
#include "conio.h "
void main()
{

FILE *fp;
fp=NULL;
if((fp=fopen( "c:\\data.txt file ", "r "))==NULL)
cout < < "文件读取正确 ";
else
exit(0);
char ch=fgetc(fp);
while(ch!=EOF) //用来循环读取文件的内容。
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}

可以编译通过,可是程序一运行,就出现如下错误:

Debug Assertion Failed!

Program: c:\1.exe
File:fgetc.c
Line:41

Expression:stream!=NULL

For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

这到底是那里出错了啊?
帮帮我啊?

[解决办法]
if((fp=fopen( "c:\\data.txt file ", "r "))==NULL)
还 "读取文件正确 "?
[解决办法]
注释调iostream头文件
使用printf
[解决办法]
可以个改用文件流读入,现在的用法是C的读法
[解决办法]
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <conio.h>

int main()
{

FILE *fp;
fp=NULL;
if((fp=fopen( "c:\\data.txt ", "r "))!=NULL) // 修改过这里
cout < < "文件读取正确 ";
else
exit(0);
char ch=fgetc(fp);
while(ch!=EOF) //用来循环读取文件的内容。
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);

return 0;
}

这样可以正常读取文件,那个debug错误,可能与你的编程环境有关.
[解决办法]
int __cdecl fgetc (
REG1 FILE *stream
)
{
int retval;

_ASSERTE(stream != NULL); //stream不能为NULL

_lock_str(stream);
retval = _getc_lk(stream);
_unlock_str(stream);

return(retval);
}
------------------------------------------------
if((fp=fopen( "c:\\data.txt file ", "r "))==NULL)
------------------------------------------------
stream不应该为空,为空时应该是退出,你搞反了。。。
改为!=NULL,那个文件路径你自己改正确。。。

读书人网 >C++

热点推荐