我不能让这个程序正常工作。

时间:2014-04-21 16:06:02

标签: c

我被要求修改一个程序来读取字符而不是数字。 我将数组修改为char数组。将两个“%d”更改为“%c”,如下所示

void main(void) {

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)


()用于指示用户输入。

如果我能得到一些帮助,那将是非常好的。

1 个答案:

答案 0 :(得分:2)

你必须记住scanf将换行符保留在输入缓冲区中,所以当你尝试读取一个字符时,它就会换行。

解决方案非常简单:通过在格式代码中添加空格,告诉scanf读取并丢弃前导空格:

scanf(" %c", &a[counter]);
/*     ^           */
/*     |           */
/* Note space here */