C语言 fopen函数 读取文件出错 怎么回事

我的代码是:FILE*in,*out;charfname[250]={""};charnamein[]={"dwell.dat"};printf("Pleaseinput... 我的代码是:
FILE *in,*out;
char fname[250]={""};
char namein[]={"dwell.dat"};
printf("Please input file name:");
gets(fname);
strcat(fname,namein);
in=fopen(fname,"r");
每次in的返回值都是NULL,如果我把char namein[]={"dwell.dat"};改成 char namein[]={".dat"};就可以了,这是什么原因,我的原文件名是9 tr6dwell.dat,是文件名的长度问题么?顺便问一下,如果想批量处理某个文件夹下以dat后缀的文件怎么弄?
展开
 我来答
White_MouseYBZ
2014-03-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6621万
展开全部
思路没有错。估计是文件名长度问题。如果你用的是早期的编译平台,文件主名不得长于8个字符,扩展名不得多于3个字符。批处理用*.dat就行啊……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ddfb519
2014-03-14 · TA获得超过751个赞
知道小有建树答主
回答量:720
采纳率:50%
帮助的人:177万
展开全部

你应该像下面这样子初始化字符串 :

char fname[ 250 ] = { 0 };
char namein[ ] = "dwell.dat";

最近 C 标准库已经引入了安全版本的函数,出于代码的稳定性,应该这样子写 :

FILE * in = NULL;
FILE * out = NULL;

fopen_s( & in, fname, "r" );

if( NULL != in )
{
    // TODO : 在此处添加你的文件操作代码 ...
    
    fclose( in );
    in = NULL;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2014-03-14 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1065万
展开全部
char namein[]={".dat"};
gets(fname); //输入dwell
strcat(fname,namein); 
in=fopen(fname,"r"); //打开dwell.dat

如果想批量处理的话可以

把文件命名为1.dat、2.dat、3.dat等等有规律的文件名,用一个循环逐个打开

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-14
展开全部
这是什么状况 什么都看不到 怎么回答呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式