gpt4 book ai didi

为多个文件调用 fgets 两次

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:25 25 4
gpt4 key购买 nike

我有两个名为 id.txt 和 name.txt 的文件。

id和name的内容分别是:

12345
23456
34567
45678
56789
67890

abcde
bcdef
cdefg
defgh
efghi
fghij

问题是要将它存储在一个数组中,我必须从命令行读取输入

这是我的主要代码:

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

#define MAX 10

int main(int argc, const char *argv[])
{
char id[MAX];
char name[MAX];

while(fgets(id, sizeof id, stdin) != NULL)
{
printf("ID: %s\n",id);
}

while(fgets(name, sizeof name, stdin) != NULL)
{
printf("Name: %s\n",name);
}
return 0;
}

最后一点是我必须在命令行中重定向输入文件。

到目前为止我的命令行参数是:

 gcc -Wall -ansi -o main main.c     
./main < id.txt name.txt

输出是:

12345

23456

34567

45678

56789

67890

据我对 fgets() 的了解,当它到达文件末尾时,它将返回 null。所以在读取第一个文件后,第一个 while 循环会停止,然后转到第二个 while 循环。

最佳答案

您将文件名作为命令行参数传递,但未在源代码中使用。请找到以下代码以更好地理解。

并以 ./main id.txt name.txt

运行你的代码

argv[1]argv[2] 分别包含id.txt 和name.txt。

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

#define MAX 10

int main(int argc, const char *argv[])
{
char id[MAX];
char name[MAX];
FILE *fp1;
FILE *fp2;
if(argc==3)
{
fp1 = fopen(argv[1],"r");
fp2 = fopen(argv[2],"r");
if((fp1==NULL)||(fp2==NULL))
{
printf("one of the file is not openend");
}
while(fgets(id, sizeof id, fp1) != NULL)
{
printf("ID: %s\n",id);
}

while(fgets(name, sizeof name, fp2) != NULL)
{
printf("Name: %s\n",name);
}
}
else
{
printf("Please check command line arguments");
}
fclose(fp1);
fclose(fp2);
return 0;
}

关于为多个文件调用 fgets 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32264736/

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