下面代码的主要思想是让我添加,删除等部分数组,使其看起来或多或少像商店的数据库(这是因为我不知道如何使用指针和等等)。我得到的东西几乎弄清楚了,但我有两大问题: 第一个问题是我得到了一个"分段错误(核心转储)"当我运行代码并选择案例1.我甚至不知道错误的含义,所以我不知道如何解决它。 第二个问题可能是我最大的问题,任何人都可以告诉我如何将数组存储在一个文件中,这样当我再次运行程序时,数组不会是空的,但会从中取出它们的元素退出时保存在同一个文件中(这就是我使用数据库一词的原因)。
包括stdio.h
包括stdbool.hint main()
{ bool bExit = false;
int select, i, price[5], amount[5];
char *name[5];
DO
{ printf("What would you like to do ?:\n"); printf("1) Add products \n"); printf("2) Delete products \n"); printf("3) Find product by name (shows position and price) \n"); printf("4) Find product by position (shows name and price) \n"); printf("6) Display all info of all products \n"); printf("7) Modify amount of existing product \n"); printf("8) Modify price of existing product \n"); printf("9 Exit \n"); scanf("%d", &select);
switch (select)
{
case 1:
{
for(i=1;i<=5;i++)
{
printf("Name: ");
scanf("%c\n", *name[i]);
printf("Price: ");
scanf("%d\n", price[i]);
printf("Amount: ");
scanf("%d\n", amount[i]);
}
break;
}
case 2:
...... bla bla bla ...
default:
{
printf("Good Bye \n");
bExit = true;
break;
}
答案 0 :(得分:0)
char * name [5]只是一个包含5个指向字符的数组。
你可以将char name[5][100]
固定为100个字符。
展望未来,你真的需要为字符串分配内存,并为“数据库”条目分配内存。
答案 1 :(得分:0)
创建一个大数组(可能是一个矢量&lt;&gt;),您可以在其中保存所有价格和名称等。然后当您使用scanf进行价格和金额使用时&amp; (如scanf(“%d”,&amp; price [i]))。 然后你在.txt文件上写下这些值(你可以使用c ++ ofstream,google),当你执行代码时,首先你要从文件中读取以前的值(使用ifstream)。
答案 2 :(得分:0)
您不需要为char * name [5]使用任何指针。请改用char name [5]。分段错误可能来自这个陈述
scanf("%c\n", *name[i]);
对于第二个问题创建一个文件,并在您想要读/写时打开它。像
这样的东西File *fptr=fopen("database","w");
for(i=0;i<5;i++){
fprintf(fptr,"%s\n",name[i]);
}
请点击此处的链接:http://www.programiz.com/c-programming/c-file-input-output