Как уже упоминалось в комментариях, проблема с scanf()
заключается (помимо прочего) в том, как он обрабатывает символ перевода строки.Однако функция sscanf()
(чтение из строки) не имеет этой проблемы!Таким образом, в зависимости от того, чего именно вы пытаетесь достичь, может быть что-то вроде следующего кода поможет:
#include <stdio.h>
int main()
{
int a[5], n = 0, given;
char buffer[200];
while (n >= 0) {
printf("\nEnter n and a list of numbers: ");
fgets(buffer, 200, stdin);
printf("Input was: %s", buffer);
n = -1;
given = sscanf(buffer, "%d %d %d %d %d %d", &n, &a[0], &a[1], &a[2], &a[3], &a[4]);
if ((given < 1) || (given != n + 1)) printf("Invalid input!\n");
}
return 0;
}
Я не говорю, что это идеальное решение, или даже то, что вы могли бы его использовать, ноэто может дать вам некоторые подсказки относительно того, куда идти дальше.
Дайте мне знать, как вы его найдете.