69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFF 1024
void append (FILE *, FILE *);
int main (int argc, char *argv[])
{
int i;
FILE *target, *source;
if (argc <= 3)
{
printf("format: filename target_fliename source_f1 source_f2 source_fn......\n");
exit(EXIT_FAILURE);
}
if ((target = fopen(argv[1], "a")) == NULL)
{
printf("Can't open %s \n", argv[1]);
exit(EXIT_FAILURE);
}
for (i = 2; i < argc; i++)
{
if (strcmp(argv[i], argv[1]) == 0)
{
printf("%s is the same to the target.\n", argv[i]);
continue;
}
else if ((source = fopen(argv[i], "r")) == NULL)
{
printf("Can't open %s \n", argv[i]);
exit(EXIT_FAILURE);
}
else
append(source, target);
fclose(source);
}
fclose(target);
return 0;
}
void append (FILE *source, FILE *target)
{
size_t byte;
static char temp[BUFF];
if ((byte =fread(temp, sizeof(char), BUFF, source)) > 0)
{
fwrite(temp, sizeof(char), BUFF, target);
}
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFF 1024
void append (FILE *, FILE *);
int main (int argc, char *argv[])//argv第一个参数为exe的路径,由系统写入
{
int i;
FILE *target, *source;
if (argc <= 3)
{
printf("format: filename target_fliename source_f1 source_f2 source_fn......\n");
exit(EXIT_FAILURE);
}
if ((target = fopen(argv[2], "a")) == NULL)
{
printf("Can't open %s \n", argv[1]);
exit(EXIT_FAILURE);
}
for (i = 3; i < argc; i++)// target_fliename 为第四个参数,
{
if (strcmp(argv[i], argv[2]) == 0)
{
printf("%s is the same to the target.\n", argv[i]);
continue;
}
else if ((source = fopen(argv[i], "r")) == NULL)
{
printf("Can't open %s \n", argv[i]);
exit(EXIT_FAILURE);
}
else
append(source, target);
fclose(source);
}
fclose(target);
return 0;
}
void append (FILE *source, FILE *target)
{
size_t byte;
static char temp[BUFF];
if ((byte = fread(temp, sizeof(char), BUFF, source)) > 0)
{
//fwrite(temp, sizeof(char), BUFF, target);//应写入实际读取到的字节数,到尾部可能读取的内容小于缓存大小
fwrite(temp, sizeof(char), byte, target);
}
}
void append (FILE *source, FILE *target)
{
size_t byte;
static char temp[BUFF];
if ((byte =fread(temp, sizeof(char), BUFF, source)) > 0)
{
fwrite(temp, sizeof(char), BUFF, target); //BUFF 改成 byte 就好了。。晕死。谁能告诉我为什么?
}
}