Pegando o personagem em array e imprimindo-o em C

Sep 15 2020

Eu estava interessado no seguinte problema: Pegue as cores como caracteres (por exemplo: 'y' para amarelo, 'r' para vermelho etc.) em uma matriz e exiba o mesmo. Durante a exibição, deve haver um único espaço entre cada caractere. Então, para fazer isso, escrevi o seguinte código:

#include <stdio.h>


 int main(){

char a[10];
int i,n;
printf("Enter the number of colors (less than 10)\n");
scanf("%d", &n);
printf("Enter colors as alphabets : ");
for (i = 0; i < n; i++){
    scanf("%c", &a[i]);
}
printf("Entered colors are : ");
for (i = 0; i<n; i++){
    printf("%c ", a[i]);
}

return 0;
 }

Se eu inserir o tamanho da matriz como 3 e as Cores como ryg, a saída não imprimirá todas as três entradas, em vez disso, imprimirá apenas uma. Mal percebi que há um problema com a função scanf. Qual pode ser o problema?

Respostas

1 VladfromMoscow Sep 15 2020 at 19:25

Use o seguinte especificador de conversão

scanf(" %c", &a[i]);
      ^^^

Isso permite pular os espaços em branco que, por exemplo, correspondem à tecla Enter pressionada.

Também após este loop

for (i = 0; i<n; i++){
    printf("%c ", a[i]);
}

coloque a declaração

putchar( '\n' );