Полагаю, это то, что вы хотите, оно делает именно то, что вы указали.
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char** argv) {
int age;
char* buffer;
buffer = malloc(200 * sizeof(char));
sscanf("19 cool kid", "%d cool %s", &age, buffer);
printf("cool %s is %d years old\n", buffer, age);
return 0;
}
Формат ожидает: сначала число (и помещает его в точку, на которую указывает & age), затем пробел (ноль или более), затем буквенную строку «cool», затем снова пробел (ноль или более), а затем, наконец, строка (и поместите это в любой буфер указывает на).
Вы забыли «классную» часть в строке формата, поэтому формат просто предполагает, что это строка, которую вы хотели назначить в буфер. Но вы не хотите назначать эту строку, просто пропустите ее.
В качестве альтернативы, вы также можете иметь строку формата, например: "% d% s% s", но затем вы должны назначить для нее другой буфер (с другим именем) и распечатать его как: "% s% s is % d лет \ n ".