我想使用rand()
生成随机名称并将每个名称链接到一个整数(例如,如果是Daniel,则为1,对于Sarah,则为2,依此类推)。我写了函数void random_name ()
并使用switch
链接返回名称的每个数字rand()
,但现在我想使用文件执行此操作。我怎样才能从文件中读取例如以1开头的行?谢谢:))
答案 0 :(得分: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);
}