Вы не можете сделать это с scanf
(по крайней мере, не легко).Если вы хотите обрабатывать пользовательский ввод, scanf
- плохой выбор (фактически, за все мои годы разработки на C я никогда не использовал scanf
; я рекомендую вам вообще избегать его).
num==NULL
не имеет смысла: num
- это число, но NULL
- это значение указателя.Если вы хотите проверить, был ли scanf
успешным, вам нужно проверить его возвращаемое значение.
Я бы сделал что-то вроде:
char line[100];
while (fgets(line, sizeof line, stdin)) { // read input line by line
int num;
if (sscanf(line, "%d", &num) != 1) { // the line didn't start with a valid integer
break;
}
printf("%d\n", num);
}
Если вы хотите проверить специально дляпустая строка, а не просто нечто, не похожее на число, вы можете использовать strspn
:
if (line[strspn(line, " \t\n")] == '\0') {
// line contains spaces / tabs / newlines only