我正在制作一个程序,要求用户键入5种产品及其价格的列表。名称和价格都存储在两个并行阵列中,稍后将一起使用以输出每种产品的价格。用于请求输入和存储信息的功能如下:
void NamesAndPrices(char products[5][41], float prices[5]) {
for (int i = 0; i < 5; i++) {
printf("Type the name of the product: ");
fgets(products[i], 41, stdin);
strtok(products[i], "\n");
printf("Type the price: ");
scanf("%f", &prices[i]);
}
}
它接收两个参数:将要存储信息的数组,均在main()
函数中声明:
int main() {
char products[5][41];
float prices[5];
NamesAndPrices(products, prices);
return 0;
}
在编译并运行代码时,仅要求输入产品名称一次。这是一个示例:
Type the name of the product: 40 x 60 Rug
Type the price: 39.99
Type the name of the product: Type the price: 0
Type the name of the product: Type the price: 0
Type the name of the product: Type the price: 0
Type the name of the product: Type the price: 0
为什么在第一次执行语句后忽略fgets()
?