gpt4 book ai didi

c - 只读取文件中的某些字符串

转载 作者:行者123 更新时间:2023-11-30 15:25:00 24 4
gpt4 key购买 nike

我想使用 rand() 生成随机名称,并将每个名称链接到一个整数(例如 1 if 代表 Daniel,2 代表 Sarah 等等)。我编写了函数 void random_name () 并使用 switch 将每个数字 rand() 返回到一个名称,但现在我想这样做使用文件。例如,如何从文件中仅读取以 1 开头的行?谢谢:)

最佳答案

如果您希望每一行都有一个数字和一个名称,您必须阅读每一行以查找随机生成的数字。实现这一目标的一种方法是这样的:

srand(time(0));
// random number between 1 and 10
int r = rand() % 10 + 1;
char line[128];
char name[64];
int number;
FILE* file = fopen("names.txt", "r");
if(file) {
// loop while not EOF
while(fgets(line, sizeof line, file) != NULL) {
// scan the line for a number and a name
sscanf(line, "%d %s", &number, name);
// if the number is equal to the random one break the loop
if(number == r) {
printf("random name is %s\n", name);
break;
}
}
fclose(file);
}

如果每一行只有一个名称并且至少有 10 个不同的名称,则可以使用以下方法:

srand(time(0));
int r = rand() % 10 + 1;
char line[128];
FILE* file = fopen("names.txt", "r");
if(file) {
// loop while not EOF and r > 0, when r is 0 then we have
// read r amount of lines from the file
while(fgets(line, sizeof line, file) != NULL && --r);
printf("random name is %s\n", line);
fclose(file);
}

关于c - 只读取文件中的某些字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com