运用fopen读入文件出错求指点
使用fopen读入文件出错求指点!
我是新手,最近在学习fopen语句,想要打开一个txt文本,读取里面的数据再显示出来。程序如下:
#include <stdio.h>
#include <stdlib.h>
#define PATH "C:\Users\Documents\Visual Studio 2010\Projects\learn\data.txt"
int main()
{
FILE* fd=NULL;
long dev;
long offset;
long length;
char ch;
double ts=0.000000;
fd=fopen(PATH,"r");
if(fd==NULL)
{
printf("cannt not find file\n");
exit(0);
}
fseek(fd,0,SEEK_SET);
while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts))
{
printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts);
}
close(fd);
return 0;
}
但是调试之后总是显示cannt not find file。我已经把txt文本放在项目文件里了,怎么还是找不到文件呢???求各位前辈帮忙哇!
------解决方案--------------------
1,转义字符'\';
2,r:只读方式,文件必须存在;
提示“cannt not find file”,说明fopen返回的是NULL,打开该文件失败。
你把"r"模式改为"a+"试一下。
------解决方案--------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
试试在cmd窗口中输入以下命令:
dir "C:\Users\Documents\Visual Studio 2010\Projects\learn\data.txt"
------解决方案--------------------
亲,“\”这个家伙不喜欢孤独,喜欢凑热闹。记住,以后用到它的时候,则说明它又在凑热闹,周边肯定有它看热闹的东西——包括断行,它的热闹在下一行!
------解决方案--------------------
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
所以你应该检查errno的值来判断具体出错原因。
我是新手,最近在学习fopen语句,想要打开一个txt文本,读取里面的数据再显示出来。程序如下:
#include <stdio.h>
#include <stdlib.h>
#define PATH "C:\Users\Documents\Visual Studio 2010\Projects\learn\data.txt"
int main()
{
FILE* fd=NULL;
long dev;
long offset;
long length;
char ch;
double ts=0.000000;
fd=fopen(PATH,"r");
if(fd==NULL)
{
printf("cannt not find file\n");
exit(0);
}
fseek(fd,0,SEEK_SET);
while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts))
{
printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts);
}
close(fd);
return 0;
}
但是调试之后总是显示cannt not find file。我已经把txt文本放在项目文件里了,怎么还是找不到文件呢???求各位前辈帮忙哇!
------解决方案--------------------
1,转义字符'\';
2,r:只读方式,文件必须存在;
if(fd==NULL)
{
printf("cannt not find file\n");
exit(0);
}
提示“cannt not find file”,说明fopen返回的是NULL,打开该文件失败。
你把"r"模式改为"a+"试一下。
------解决方案--------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
试试在cmd窗口中输入以下命令:
dir "C:\Users\Documents\Visual Studio 2010\Projects\learn\data.txt"
------解决方案--------------------
亲,“\”这个家伙不喜欢孤独,喜欢凑热闹。记住,以后用到它的时候,则说明它又在凑热闹,周边肯定有它看热闹的东西——包括断行,它的热闹在下一行!
------解决方案--------------------
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
所以你应该检查errno的值来判断具体出错原因。