gpt4 book ai didi

c - 在文本文件中搜索字符串并将其复制到另一个文件

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

我有一个全是姓氏的数组。我希望我的程序按如下方式使用这些姓氏:

  • 搜索两个文件,如果在给定点在任一文件中找到姓氏,则复制该行的其他详细信息,并将它们打印到排序文件中。

姓氏按字母顺序排列。我正在使用 fscanf 读取信息,然后使用 strcmp 查看字符串是否相同,但是当我运行该程序时,它只是将一个学生的姓名复制到文件中,没有其他任何内容。这是我正在使用的代码:

for(i=0; i<SURNAMES; i++)
{
//Search file 1
while (fscanf(fp, "%d %s %s %s",&student_id,first_name,surname,student_type) != EOF)
{
if(strcmp(surnames[i], surname) == 0)
{
fprintf(sorted_students, "%d %s %s %s\n",student_id,first_name,surname,student_type);
}
}

//Search file 2
while (fscanf(fp2, "%d %s %s %s",&student_id,first_name,surname,student_type) != EOF)
{
if(strcmp(surnames[i], surname) == 0)
{
fprintf(sorted_students, "%d %s %s %s\n",student_id,first_name,surname,student_type);
}
}

}

当我将 for 循环放在 while 循环中时,它以某种方式起作用,但是当我这样做时,最初可能位于第二个文件中的学生将被忽略。如果我将 for 循环放在里面,按字母顺序对学生进行排序的整个想法就会丢失,并且不会根据他们在原始数组中的位置对他们进行排序。

最佳答案

您应该每次都在文件的第一个,在“for 循环”的第一个!使用 fseek 函数。

fseek(fp, 0, SEEK_SET);
fseek(fp2, 0, SEEK_SET);

关于c - 在文本文件中搜索字符串并将其复制到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555843/

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