如何正确查找文件中的字符串?

时间:2017-04-02 17:20:38

标签: c string fgets

在这个函数中,我正在向屏幕显示一个.txt文档,但是,我正在尝试读取文件文档并扫描文档中的单词EMPTY,因为我将它保存为字符串变量。应该注意的是,我正计算EMPTY在文件中的时间,然后打印文件中的时间以及另一件事。我的第一个问题是我这样做是正确的吗?

 void allSeats(void)
    {
        int position = 0;
        int count = 0;
        char gone[6] = "EMPTY";

        system("cls");
    retry: 
        fseatArrangement = fopen("airlineSeatingArrangment.txt", "r");
        while (fgets(econoAirSeatArrangement, 1000, fseatArrangement) != NULL)
            printf(econoAirSeatArrangement);
        fclose(fseatArrangement);

        while (count < FULL)
        {
            fgets(econoAirSeatArrangement, 1000, fseatArrangement);
            fscanf(fseatArrangement,"%s", &gone);
            count++;
        }
        printf("There are %d seats vacant at the moment\nThere are %d seats with no vacancy at the moment \n",count, FULL-count);


        printf("Enter Zero(0) Key to return to menu at anytime.");
            scanf("%d", &position);
            if (position == 0)
            {
                system("cls");
                menu();
            }
            else
            {
                system("cls");
                printf("INVALID INPUT! Please try again.\n");
                goto retry;
            }

        system("pause");
        return;

    }

1 个答案:

答案 0 :(得分:1)

主要问题在这里

 fgets(econoAirSeatArrangement, 1000, fseatArrangement);

您已使用fclose()关闭了文件指针,但是,您尝试使用它。它会导致undefined behavior

那就是说,

  • printf(econoAirSeatArrangement);出现错误。如果您不希望有任何格式转换规范,可以坚持使用puts()
  • 在使用返回值/扫描值之前,您必须检查fopen()fgets()fscanf()等的返回值是否成功。