首页 > 解决方案 > 从 C 中的名称文件中读取字符串时出现问题

问题描述

我正在阅读一个每个名称都有一行的文本文件。我需要生成一个 0-99 的随机数来确定要选择的名称的索引。当我使用 fscanf() 方法然后尝试显示我读取的字符串时,会输出一个空白字符串。我已经对其进行了测试,并且正在输入 if 语句以将字符串分配给变量,但分配名称似乎存在问题。

int indexOfName = rand() % 100;
        printf("%d\n", indexOfName);

        FILE *fileOfNames;
        char str[30];
        char *filename = "theFilePath";

        fileOfNames = fopen(filename, "r");
        rewind(fileOfNames);
        if (fileOfNames == NULL)
        {
            printf("Could not open file %s", filename);
            return 1;
        }
        int i = 0;
        while (fgets(str, 30, fileOfNames) != NULL)
        {
            if (i == indexOfName)
            {
                fscanf(fileOfNames, "%s", str);
            }
            i++;
        }
        printf("%s\n", str);
        fclose(fileOfNames);
        return 0;

标签: cfile-io

解决方案


你需要break之后if (i == indexOfName)。否则,您将覆盖 str 直到到达文件末尾。

您可能甚至不希望fscanfif语句中将while (fgets(str, 30, fileOfNames) != NULL)行写入 str allready。


推荐阅读