在二维数组中接受多个字符串

在二维数组中接受多个字符串

在执行此操作时,循环直接跳到最后,并给我下面的输出。

1.Generate Bill

2.Generate Bills of last 10 Purchase

Select Option:1

Enter Number of Groceries:3

Enter GroceryName:XYZ <Hit Enter>

Enter GroceryName:

Enter GroceryName:


你能建议我用c做一个更好的方法吗?
我已经在堆栈溢出上尝试过某些链接,但是它似乎对我不起作用。

void main()
{
    int iPrice[1000];
    char cGroceName[100][100];
    int iOption;
    int iGrocNum;

    printf("\n1.Generate Bill");
    printf("\n2.Generate Bills of last 10 Purchase");
    printf("\nSelect Option:");
    scanf_s("%d", &iOption);

    switch (iOption)
    {
    case 1:
        printf("\nEnter Number of Groceries:");
        scanf_s("%d",&iGrocNum);
        for (int i = 0; i <iGrocNum; i++)
        {

            printf("\nEnter GroceryName:");
            scanf_s(" %s",cGroceName[i]);

        }

最佳答案

scanf_s(" %s",cGroceName[i]);


应该

scanf_s("%99s", cGroceName[i], sizeof cGroceName[i]);


因为scanf_s对于某些格式说明符需要第三个参数,例如%s表示其相应参数的最大大小。

请参见scanf_s documentation

关于c - 在二维数组中接受多个字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43662069/

10-11 16:34