如何通过使用循环在scanf中使用char?

问题描述

我想制作简单的计费软件,但我不知道要解决此问题

#include <stdio.h>
    
int main()
{
    char a[20];
    int i,j,b;
    i = 0;
    printf("How many item you have?\n>>> ");
    scanf("%d",&j);
    for (int i = 0; i < j; i++)
    {
        
        printf("Type the name of item no. %d?\n>>> ",i + 1);
        scanf("%c",&a);
        printf("Type the item quantity?\n>>> ");
        scanf("%d",&b);
    }
        
    return 0;
}

如您所见,此代码仅用于提问。在这代码中,一切都很好,但是,当我运行这段代码时,输​​出为:

How many item you have?
>>> 4
Type the name of item no. 1?
>>> Type the item quantity?
>>>

一切似乎都很好,但是我没有输入项目名称,循环直接询问了第二个问题。怎么可能?

解决方法

%c的{​​{1}}格式说明符读取一个单个字符。要读取字符的字符串(数组),请使用scanf格式说明符。另外,对于此类数组,您不需要%s(的地址)运算符,因为数组名称本身将“衰减”到指向其第一个元素的指针:

&