我被要求修改一个程序来读取字符而不是数字。 我将数组修改为字符数组。将两个“%d”更改为“%c”,如下
无效主(无效) {
char a[100];
int counter;
int b;
counter = 0;
printf("please enter the length of the array: ");
scanf("%d", &b );
while (counter != b)
{
printf("please enter character: ");
scanf("%c", &a[counter]);
counter++;
}
a[counter] = '\0' ;
counter = 0;
while (a[counter] != '\0')
{
printf("\n");
printf("%c",a[counter]);
counter++;
}
}
当我运行这个程序时,程序会执行以下操作:
请输入数组的长度:(4)
请输入字符: 请输入字符:(a)
请输入字符: 请输入字符: (a)
一个
一个
<小时/>() 用于指示用户输入。
如果我能得到一些帮助,那就太好了。
最佳答案
你必须记住scanf
将换行符留在输入缓冲区中,因此当您尝试读取字符时,它将读取该换行符。
解决方案非常简单:通过在格式代码中添加空格,告诉 scanf
读取并丢弃前导空格:
scanf(" %c", &a[counter]);
/* ^ */
/* | */
/* Note space here */
关于c - 我无法让这个程序正常工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201036/