抄书写的代码,没照出错误
#include "stdio.h"#include "stdlib.h"
#include "string.h"
#define bufsize 1024
#define slen 81
void append(FILE* source,FILE* dest);
int main()
{
FILE*fa,*fs;
int files=0;
char fileapp[slen];
char filesrc[slen];
puts("输入目标文件");
gets(fileapp);
if ((fa=fopen(fileapp, "a"))==NULL)
{
puts("错误");
exit(2);
}
if (setvbuf(fa, NULL, _IOFBF, bufsize))
{
fputs("不能创造一个缓冲区\n", stderr);
exit(3);
}
puts("输入来源文件名字\n");
while (gets(filesrc)&&filesrc[0]!='\0')
{
if (strcmp(filesrc, fileapp)==0)
{
fputs("不能自己弄自己", stderr);
}
else if ( (fs= fopen(filesrc, "r"))==NULL )
{
fprintf(stderr, "大不开文件啊啊啊啊啊");
}
else
{
if (setvbuf(fs, NULL, _IOFBF, bufsize)!=0)
{
fputs("打不开输入的缓冲区", stderr);
continue;
}
append(fs, fa);
if (ferror(fs)!=0)
{
fprintf(stderr, "reading file %s is wrong !\n",filesrc);
}
if (ferror(fa)!=0)
{
fprintf(stderr, "writing files %s is wrong !\n",fileapp);
}
fclose(fs);
files++;
printf("文件%s appended.\n",filesrc);
puts("下一个文件");
}
}
printf("over %d files appended",files);
fclose(fa);
return 0;
}
void append(FILE* source,FILE* dest)
{
size_t bytes;
static char temp[bufsize];
while ((bytes=fread(temp, sizeof(char), bufsize, source))>0)
{
fwrite(temp, sizeof(char), bytes, dest);
}
}
语法应该没问题,但是不知道为什么,程序没作用。。。我输入两个文件,但是两文件都没变化。