搜索文本文件以查找字符串并将其复制到另一个文件

时间:2016-04-11 17:56:31

标签: c file sorting

我有一个充满姓氏的数组。我希望我的程序使用这些姓氏如下:

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

姓氏按字母顺序排序。我使用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循环放在里面,那么按字母顺序排序学生的整个想法就会丢失,并且它们不会根据它们在原始数组中的位置进行排序。

1 个答案:

答案 0 :(得分:2)

你应该去第一个文件,第一个是&#34; for循环&#34;每次! 使用fseek功能。

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