c - 从 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;
解决方案
你需要break
之后if (i == indexOfName)
。否则,您将覆盖 str 直到到达文件末尾。
您可能甚至不希望fscanf
在if
语句中将while (fgets(str, 30, fileOfNames) != NULL)
行写入 str allready。
推荐阅读
- swiftui - 读取@Binding 值
- gulp - Gulp 任务的多个来源
- python - 同时接收多个文件
- crafter-cms - 如何在 Crafter 中使用没有“内部名称”的“自动文件名”?
- android - 无法从 android Kotlin 函数中的 API GET 请求返回响应
- windows - 为什么我收到“ECHO 开启”而不是变量值?
- c++ - 有没有办法在 C++ Visual Studio 2019(社区版)中允许这样做?
- javascript - 如何在更改时检查复选框类名称并将其添加到数组中
- npm - 无法使用 npm 正确安装包裹
- python - 输入变量未使用循环函数进行转换