Ваш scanf("%d",...)
оставляет новый символ строки в буфере, который затем сразу же используется последующими scanf("%c",...)
.Чтобы преодолеть это, пусть только один scanf
после scanf("%d",...)
потребляет пробелы:
int main()
{
int n,i=0;
scanf("%d",&n);
int a[20];
char c=0;
scanf(" %c",&c); // Consume white spaces including new line character before the value for c.
while(c!='\n' && i < 20)
{
if(c!=32) {
a[i++]=c-'0';
}
scanf("%c",&c);
}
for(int x=0;x<i;x++)
printf("%d ",a[x]);
return 0;
}