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大神 展开
#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大神 展开
1个回答
展开全部
把这句:
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也可以,但就把它当一个指针用,给它赋值一个地址即可,而不是一个具体的字符串。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询