2 csdn yankang csdn_yankang 于 2014.05.14 11:23 提问

C++关于文件操作的代码错误(实现文件分割)
#include<stdio.h>

#include
int main()
{
void fg(FILE *fp1,double i);
FILE *fp;
char filename[10];
double i;
printf("请输入文件名:");
scanf("%s",filename);
printf("请输入每个文件大小(MB):");
scanf("%d",&i);
//i=i*1024*1024;//

printf("%d",i);
fp=fopen(filename,"r"); //只读的方式打开//
double j=0;
FILE *sp; //分割子文件的指针//
char ch; //转移字符的容器//
char filename2[10]={'a'}; //初始文件名//
while(!feof(fp))
{
sp=fopen(filename2,"w+");
for(j=1;j<=i;j++)
{ if(!feof(fp))
{
ch=fgetc(fp);
printf("%c",ch);
fputc(ch,sp);
}
else break;
fclose(sp);
sp=0;
filename2[0]++;//重命名//
sp=fopen(filename2,"w+");//文件指针指向新文件//
}
printf("%d",j);
fclose(sp);
fclose(fp);
}
}
不知道错在什么地方!

1个回答

lm_whales
lm_whales   Rxr 2014.05.14 16:40

#include //1)这个不算问题可以不论,不过是没有包含头文件,似乎也改正了
int main()
{
void fg(FILE *fp1,double i); //2) 没提供这个函数的实现,这里也没用到
FILE *fp;
char filename[10];
double i; //3)浮点数表示文件长度,不利于精确表示文件长度

printf("请输入文件名:");
scanf("%s",filename);

printf("请输入每个文件大小(MB):");
scanf("%d",&i); //4)输入浮点数方式错误,格式不对

//i=i*1024*1024;//

printf("%d",i); //5)输出错误,格式不对

fp=fopen(filename,"r"); //只读的方式打开//
double j=0; //6)字符计数也不宜用浮点数。
FILE *sp; //分割子文件的指针//
char ch; //转移字符的容器//
char filename2[10]={'a'}; //初始文件名// //7)文件名直接用字符串更好
while(!feof(fp))

{
sp=fopen(filename2,"w+");//8)既然是分割,最好创建新文件,不需要w+方式,wb方式就可以了
for(j=1;j<=i;j++)
{ if(!feof(fp))
{
ch=fgetc(fp);
printf("%c",ch);
fputc(ch,sp);
}
else break; //9)直接break 不太好
fclose(sp);
sp=0;
filename2[0]++;//重命名// //10)这样重命名不太好,而且最多只有26个文件名可读。
sp=fopen(filename2,"w+");//文件指针指向新文件// //11)文件打开两次,是多余的,不必要
}
printf("%d",j); //输出错误,格式不对
fclose(sp);

fclose(fp);
}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!