在执行此操作时,循环直接跳到最后,并给我下面的输出。
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/