“ for”循环中的“ fgets()”仅询问一次输入

时间:2018-07-21 12:09:23

标签: c for-loop gcc fgets parallel-arrays

我正在制作一个程序,要求用户键入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()

0 个答案:

没有答案