关于C语言的一个很具挑战性的问题!寻求大侠级人物解决

来源:百度知道 编辑:UC知道 时间:2024/05/28 01:07:10
for(i=0;(filename[i]!='\0');i++){filename[i]=fgetc(his);}filename[i]='\n';fclose(his);
以上为该程序的一部分:一个大程序!filename为一个字符数组,我用它来装从文件中读入的字符串(文件名),后面的程序用filename来当作文件名,打开文件!编译连接执行都没问题!但是运行到用filename来当打开的文件名时就打不开文件!我试过了中间插入输入文件名的语名对filename重新赋值是有用的,说明打开文件语句没错!
麻烦哪位大侠解答一下,听一听真知灼见,常人勿论!强人进来!目前本人积分较少只能赏这么多,以后还会有更多
filename[i]=fgetc(his);没问题!可以去试试!
输进去的东西也没错,我一开始考虑的是‘\N’或者'\0'的问题,但修改以后尽管输出正确的文件名但仍然打不开,文件安在,没有其它操作失误!

我试用了菠菜非菜 的方法,debug qssertion failed.....系统弹出对话框!!晕死了,这个问题可能不是那么简单。怎么搞的呢?

有高人吗?快快出来

找到答案了,字符数组是地址的值,所以会打不开。。。。。。

签于各人的关心,积分就此分了

用fopen(FILE *P,"路径")来打开文件!!!

用单步
查下输入进去的东西有没有错就OK了 FILE指针 + 路径(字符串)

很简单,filename是ASCIIZ字符串,最后要跟“\0”,你没有加。

解决的方法,一种是开始的时候给filename清空,如:
memset(filename, 0, sizeof(filename))
或者,刚才的程序,改成:
for(i=0;(filename[i]!='\0');i++)
{
filename[i]=fgetc(his);
}
filename[i]='\0';
fclose(his);

或者还有一种可能,你的filename是多个文件名,中间用'\n'隔开的,这种情况下,你使用filename的时候,要记得用'\0'替换掉每一个'\n'。

for(i=0;(filename[i]!='\0');i++)
{
filename[i]=fgetc(his);
}
filename[i]='\n';
fclose(his);
感觉你filename[i]=fgetc(his);有问题

while (filename[i]!='\0')
{

filename[i]=fgetc(his);
i++;

}
看下这样行不