c - c中的"Database"(不是实际的数据库,只是一个简单的事情)

标签 c database

下面代码的主要思想是让我添加、删除数组的等部分,使其看起来或多或少像商店的数据库(这样做是因为我不知道如何使用指针等)。我几乎弄清楚了,但我有两个大问题: 第一个问题是,当我运行代码并选择案例 1 时,我收到“段错误(核心转储)”。我什至不知道该错误意味着什么,所以我不知道如何修复它。 第二个问题可能是我最大的问题,有人能告诉我如何将数组存储在文件中,这样当我再次运行程序时,数组不会为空,而是从文件中获取它们的元素,并在退出时保存在同一个文件中(这就是我使用数据库一词的原因)。

include stdio.h
include stdbool.h

int 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:
    

...啦啦啦...

    default:
      {
        printf("Good Bye \n");
        bExit = true;
        break;
      }

最佳答案

您不需要对 char *name[5] 使用任何指针。请改用字符名称[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

关于c - c中的"Database"(不是实际的数据库,只是一个简单的事情),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305239/

相关文章:

C: 当子进程断开连接时,fork() 通知父进程

c++ - 如何使用 X11lib 以编程方式调整窗口大小?

c - 条件运算符中的这个赋值有什么问题?

mysql - 这段代码是否实现了我想要的?

database - Base64 编码数据 - 数据库或文件系统

mysql - 限制符号的数据类型?

database - 在 MySQL 中存储复选框值的搜索友好方式?

c# - 如何从Windows系统中彻底删除文件

mysql - 为什么 mysql timediff 函数会给出错误的输出?

c - 将输入发送到在 Windows 计算机上使用 C 中的 createprocess() 创建的进程