Вы можете сделать что-то подобное:
int main(void)
{
char *line[] = {"10 3 128", "16 2 F", NULL};
int nb1;
int nb2;
int nb3;
char letter;
char end;
for (size_t i = 0; line[i]; ++i) {
if (end = EOF, sscanf(line[i], "%d %d %d%c", &nb1, &nb2, &nb3, &end) == 3 && end == EOF) {
printf("number number number : %d %d %d\n", nb1, nb2, nb3);
} else if (end = EOF, sscanf(line[i], "%d %d %c%c", &nb1, &nb2, &letter, &end) == 3 && end == EOF) {
printf("number number letter : %d %d %c\n", nb1, nb2, letter);
} else {
printf("format line not supported : %s\n", line[i]);
}
}
return (0);
}
Будьте очень осторожны, так как le "% c" примет любой символ, например, '1', поэтому, возможно, вы захотите ограничить значение, полученное в%c чем-то, что вы считаете письмом.