c - 我无法让这个程序正常工作。

标签 c

我被要求修改一个程序来读取字符而不是数字。 我将数组修改为字符数组。将两个“%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/

相关文章:

C 代码-If 条件 HW

增加处理器数量时的核心内存转储

c - 试图创建一个结构,不让我输入字符串

c - 将非常量值传递给在 C 中采用 const 参数的函数的正确方法是什么

c - 在重定向输入期间,在没有 SIGINT 的情况下,在 C 中使用键盘停止 unix 程序

c - 关于 BMP 文件。我如何写入/更改像素颜色? (在C中)

c - Proteus 中伺服电机无法正常转动

学生结构中的 C 内存分配不起作用

c - 为什么unsigned++不循环

c - 使用 fread 和 fseek 读取文本文件中特定数量的字符