【发布时间】:2013-04-21 19:35:23
【问题描述】:
我必须在 C 中为操作系统类解决以下问题:
在命令行给出三个文件,两个用于输入,一个用于输出。 输出文件是从输入文件中得到的,如下: 10 bytes from 第一个文件,第二个文件的 20 个字节,接下来的 10 个字节 第一个文件,从第二个文件开始的接下来的 20 个字节,依此类推,直到 输入文件完成。
简单但低效的解决方案:读取和写入 10 / 20 字节组。 一个高效(但不简单)的解决方案:读写块 5000 字节。
我尝试了这个简单的解决方案。但它不起作用......有人可以帮助我吗?
#include<stdio.h>
int main(int argc, char* argv[], char* envp[]){
if (argc != 4){
printf("%s", "Usage: c4h filename\n");
return 0;
}
int c1,c2,i;
FILE *in1;
FILE *in2;
FILE *out;
in1 = fopen(argv[1], "r");
in2 = fopen(argv[2], "r");
out = fopen(argw[3], "wb");
if (in1 == NULL){
printf("%s", "File not found!\n");
return 0;
}
if (in2 == NULL){
printf("%s", "File not found!\n");
return 0;
}
while(feof(in1)!=0 && feof(in2)!=0){
for(int i=0;i<20;i++)
if(feof(in1)!=0){
c1 = fgetc(in1);
fputc(c1,out);
}
for(int i=0;i<10;i++){
if(feof(in2)!=0){
c2 = fgetc(in2);
fputc(c2,out);
}
}
fclose(in1);
fclose(in2);
fclose(out);
return 0;
}
【问题讨论】:
-
你试过了吗?
-
您是否尝试过任何一种解决方案?您是否需要对其进行优化,或者低效的解决方案是否足够?
-
我将从三个
FILE指针和一个循环开始。除此之外,没有太多可评论的,因为您没有提供包含更具体问题的代码。 -
低效的解决方案应该足够了。我阅读并试图理解一些 C 教程,但我仍然不知道如何解决这个问题
-
肯定首先采用更简单的“低效”解决方案。由于操作系统和/或硬件的缓存,它不会像您想象的那么大。