#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 81
#define SIZE 1024
int main()
{
FILE *fs,*ft; //fs是源文件,ft是目标文件
char name[LEN]; //被复制文件名
char name_t[LEN+12]="复件"; //目标文件名
char temp[SIZE];
int n;
fputs("输入文件名:",stdout);
gets(name);
if((fs=fopen(name,"rb"))==NULL)
{
fprintf(stderr,"不能打开文件 %s\n",name);
exit(EXIT_FAILURE);
}
strcat(name_t,name); //创建新文件
if((ft=fopen(name_t,"wb"))==NULL)
{
fprintf(stderr,"不能打开文件 %s\n",name);
exit(EXIT_FAILURE);
}
while((n=fread(temp,sizeof(char),SIZE,fs))>0)
fwrite(temp,sizeof(char),n,ft);
fclose(fs);
fclose(ft);
getch();
return 0;
}
这是个文件复制程序
针对
while((n=fread(temp,sizeof(char),SIZE,fs))>0)fwrite(temp,sizeof(char),n,ft);
为什么sizeof(char)改成别的数值就不能正常工作?这里的数值到底怎么用,就是说,什么时候用 sizeof(char),什么时候用sizeof(double),如果一个文件里全装的是double型数值,用sizeof(char)有没有问题?
程序里的SIZE是1024,要是读取的文件<1024个字节呢,书上说,如果正确运行则这个值好像是=n的,何解?
请指教!!!,共同学习的+(842673178)