gpt4 book ai didi

c++ - 无法从数组中检索字符串

转载 作者:行者123 更新时间:2023-11-30 19:39:53 25 4
gpt4 key购买 nike

我正在编写一个程序来使用数组存储商品名称和价格。但这里无法从数组中检索项目名称。程序崩溃了。

#include <stdio.h>
#include <stdlib.h>


void main()
{
char itemName[100];
int n=0, i,j, total=0, itemPrice[1];

printf("Enter number of items: \n");
scanf("%d", &n);
//fflush(stdin);
for (i = 0; i < n; i++)
{
printf("Item name: \n");
scanf("%s", &itemName[i]);
for (j = i ; j<=i; j++ )

{
printf("Enter the price\n");

scanf("%d", &itemPrice[j]);

total += itemPrice[j];
}
}

for (i = 0; i < n; i++)

printf(" %s", itemName[i]);

for (j = i ; j<=i; j++)

printf("\t\t%s\n", itemPrice[j]);

}

最佳答案

您必须分配足够的空间来存储字符串和整数。另外,您必须对 printf() 使用正确的格式说明符,或者您可以调用未定义的行为

循环for (j = i ; j<=i; j++)没有害处,但几乎毫无意义且令人困惑。

另请注意,您在程序的后半部分中仅进行迭代以打印名称,而不打印价格。

可能的修复:

#include <stdio.h>

#define ITEM_MAX 100

int main(void)
{
char itemName[ITEM_MAX][1000];
int n=0, i, total=0, itemPrice[ITEM_MAX];

printf("Enter number of items: \n");
if (scanf("%d", &n) != 1)
{
fputs("read error\n", stderr);
return 1;
}
for (i = 0; i < n; i++)
{
printf("Item name: \n");
/* Specify the length to read in order to avoid buffer overrun. */
/* Don't forget to reserve space for terminating null-character. */
if (scanf("%999s", itemName[i]) != 1)
{
fputs("read error\n", stderr);
return 1;
}

printf("Enter the price\n");

if (scanf("%d", &itemPrice[i]) != 1)
{
fputs("read error\n", stderr);
return 1;
}

total += itemPrice[i];
}

for (i = 0; i < n; i++)
{

printf(" %s", itemName[i]);

printf("\t\t%d\n", itemPrice[i]);
}

return 0;
}

关于c++ - 无法从数组中检索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com