gpt4 book ai didi

c - 两个文件在C程序中分别输出一行

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:49 26 4
gpt4 key购买 nike

我正在尝试创建一个 main 函数,该函数采用命令行参数,允许该程序打开两个文件(命令行上提供的路径)并将这两个文件一次一行地组合成一个输出。提供的第一个文件是文本行。删除所有尾随空格、制表符和新行。第二个文件是一个数字列表,打印到输出时必须为每个数字加一个。此外,两列应以制表符分隔。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

const int MAXLEN = 4096;
const int MAXLINES = 10;

int main(int argc, char *argv[]) {

char buffer[MAXLEN];
char buffer2[MAXLEN];
FILE *fp = fopen(argv[1], "r");
FILE *fp2 = fopen(argv[2], "r");

if (!fp || !fp2) {
perror ("Not Found");
exit (EXIT_FAILURE);
}

int n = 0;
while((n < MAXLINES) && (fgets (buffer, sizeof (buffer), fp)) && (fgets(buffer2, sizeof (buffer2), fp2))) {
printf("%s\t%s", buffer, buffer2);
n++;
}
}

fclose(fp);
fclose(fp2);

return 0;
}

例如对于输入和输出:

./c2 test/c2-testa test/c2-testb

Test A 11
Test B 51
Test C 91
Test D 26
Test E 17
Test F 76

这是我在 gcc 命令后收到的:

c2:
c2.c:53:7: warning: data definition has no type or storage class
fclose(fp);
^~~~~~
c2.c:53:7: warning: type defaults to ‘int’ in declaration of ‘fclose’ [-Wimplicit-int]
c2.c:53:7: warning: parameter names (without types) in function declaration
c2.c:54:7: warning: data definition has no type or storage class
fclose(fc2);
^~~~~~
c2.c:54:7: warning: type defaults to ‘int’ in declaration of ‘fclose’ [-Wimplicit-int]
c2.c:54:7: warning: parameter names (without types) in function declaration
c2.c:56:7: error: expected identifier or ‘(’ before ‘return’
return 0;
^~~~~~
c2.c:58:7: error: expected identifier or ‘(’ before ‘}’ token
}
^
make: *** [Makefile:31: c2.o] Error 1

最佳答案

您所做的是为第一个文件的每一行打印第二个文件的所有行(嵌套循环)。你的循环应该是这样的:

  int n = 0;
while((n < MAXLINES) && (fgets (buffer, sizeof (buffer), fp)) && (fgets(buffer2, sizeof (buffer2), fp2))) {
printf("%s\t%s", buffer, buffer2);
n++;
}

请注意,这不会处理“删除尾随空格”。您可能需要为此做一些额外的处理。

此外,打开文件后的条件应该是 if(!fp || !fp2) 以确保两个文件都可以打开!!

关于c - 两个文件在C程序中分别输出一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53313339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com