c语言连续打开显示然后关闭文件的函数问题

#include<stdio.h>#include<string.h>#include<windows.h>main(){FILE*fp;charch;char*file... #include <stdio.h>
#include <string.h>
#include <windows.h>

main()
{
FILE *fp;
char ch;
char *file_path;
char file_head[30] ="D:\\f\\";
char filename[30];
const int filecount=5463;
int count;

for(count=1;count<=filecount;count++)
{
sprintf(filename,"%s%d.txt",file_head,count);
file_path = "filename";
if((fp=fopen(file_path,"r"))==NULL)
{
printf("\nSorry, Can't open the file! @_@\n");
exit(0);
}
else
{
while((ch=fgetc(fp))!=EOF)
{
printf("%c",ch);
Sleep(40) ;
}
fclose(fp);
}

}
}

目录 txt目录 d\f\1.txt,2.txt.....
依次打开显示关闭 共5000多个
每次延时 40毫秒 但是执行显示无法打开文件 到底是是哪里出错了?
求C大神
展开
 我来答
splashchaos
推荐于2016-03-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3620万
展开全部

把这句:

  file_path = "filename";

改成:

  file_path = filename;

而且这句其实可以放到for前面;其实这句没有,直接用filename就可以了。 filename的地址不变,只是内容在变。

还有:

你的sleep的位置,有问题。 你每读一个ch就sleep啊~应该是:

 else
   {
     while((ch=fgetc(fp))!=EOF)
     {  
         printf("%c",ch); 
     }
     Sleep(40) ; // <===移到这里
     fclose(fp);
   }
追问
那提示文件无法打开的问题出在哪里  else之前好像就出问题了
是不是定义了file path为地址的问题
追答
file_path的内容不正确,导致你无法fopen一个有效的文件!
file_path只是一个指针, file_path = "filename";变成了赋值,这是不正确而且是很危险的。指针需要指向一个地址。 你在声明的时候,可以:
char *file_path = "filename"; // 虽然这样作也不好!!!

这样,系统自动分配内存,相对于:
file_path = (char*)malloc(sizeof(char)*strlen("filename"));
但这样一来,file_path的内容就是“filename”这个字符串,而不是filename里面的内容了。
而且字符串的赋值,也不能用"=",而是要strcpy或strncpy。--- 这都不是你这个程序该用的,你的程序就是要每次“合成”一个有效的文件名,因此sprintf已经足够给字符串filename赋予正确的内容了,你后面直接用filename就可以了。 当然你非要file_path也可以,但就把它当一个指针用,给它赋值一个地址即可,而不是一个具体的字符串。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式