Используйте fgets()
для чтения всей строки.
char line[100];
while (fgets(line, sizeof line, inp)) {
// got a line, need to isolate parts
}
Затем, в зависимости от того, могут ли слова иметь встроенные пробелы, выберите одну из следующих стратегий.
a) sscanf()
чтобы выделить имя и возраст
while (fgets(line, sizeof line, inp)) {
char name[30];
int age;
if (sscanf(line, "%29s%d", name, &age) != 2) /* error, bad line */;
// ...
}
b) strrchr()
, чтобы найти последний пробел, затем строковые манипуляции для извлечения имени и возраста.
while (fgets(line, sizeof line, inp)) {
char name[30];
int age;
char *space = strrchr(line, ' ');
if (!space) /* error, bad line */;
if (space - line >= 30) /* error, name too long */;
sprintf(name, "%.*s", space - line, line);
age = strtol(space, NULL, 10); // needs error checking
// ...
}
стратегия b) на https://ideone.com/ZOLie9