1

我对以下问题感兴趣:将颜色作为字符(例如:'y' 表示黄色,'r' 表示红色等)放入数组并显示相同。在显示时,每个字符之间应该有一个空格。为此,我编写了以下代码:

#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;
 }

如果我将数组的大小输入为 3 并将颜色输入为 ryg ,则输出不会打印所有三个输入,而是仅打印一个。我几乎没有意识到 scanf 函数有问题。可能是什么问题?

4

1 回答 1

1

使用以下转换说明符

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

这允许跳过例如对应于按下的 Enter 键的空格。

同样在这个循环之后

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

放置语句

putchar( '\n' );
于 2020-09-15T12:25:42.577 回答