C:来自键盘的多个输入

时间:2015-12-10 10:50:31

标签: c input keyboard

我试图从键盘读取多个输入并将输入存储在变量中。

我的代码:

char answer = 'N';
int artnr;
char artname [27];
int stock;
double price;

while (answer != 'Y') {
printf("%s\n", "Enter article number:");
scanf("%d" , &artnr);
printf("%s\n", "Enter article name:");
scanf("%c" , &artname);
printf("%s\n", "Enter stock balance:");
scanf("%d" , &stock);
printf("%s\n", "Enter a price");
scanf("%f" , &price);
printf("%s\n", "Do you want to quit? (Y/N)");
scanf("%c" , &answer);
}

输出:
输入商品编号:
1
输入文章名称:
输入库存余额:
25个
输入价格
4
你想退出吗? (Y / N)
输入商品编号:

我的扫描似乎出了问题。我想它必须与' / o'在文章名称或当我按Enter键以确认我的输入。

1 个答案:

答案 0 :(得分:0)

artname是一个char数组,"输入文章名称:"建议你实际上想扫描一个字符串。 所以,这个

scanf("%c" , &artname);

可能应该是

scanf("%s", artname);
当您在输入缓冲区中使用scanf()进行扫描时,

%c会留下尾随换行符。您可以通过在格式字符串中添加空格来忽略它:

scanf("%c" , &answer);

scanf(" %c" , &answer); // Notice the space in " %c"

格式字符串中的whitepsace告诉scanf()忽略输入中的任意数量的空格。

并更改此

scanf("%f" , &price); 

scanf("%lf" , &price);

以便将格式字符串与类型匹配。