我正在阅读每个名称上都有一行的文本文件。我需要从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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句