问题描述
我想制作简单的计费软件,但我不知道要解决此问题
#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
(的地址)运算符,因为数组名称本身将“衰减”到指向其第一个元素的指针:
&