首页 > 解决方案 > 我想将客户信息存储在一系列客户中

问题描述

这用于添加新客户。

typedef struct date{

int d,m,y;

}date;


typedef struct client{

int *id;
char *nom [30];
char *prenom [30];
date date;
char  *adresse[30] ;
char *tel [30];

 }client;
client cl;
    void ajouter (){
        int age;

    printf("give first name:\n");
    scanf("%s",&cl.nom);
    printf("give last name:\n");
    scanf("%s",&cl.prenom);
    printf("give adresse:\n");
    scanf("%s",&cl.adresse);
    printf("give tel num:\n");
    scanf("%s",&cl.tel);
    printf("give date of birth :\n");
    scanf("%d %d %d",&cl.date.d, &cl.date.m, &cl.date.y);

    cl.id=1;
   if(2019-cl.date.y<18)
    printf("refuse");
    else
        printf("                          succes\n");
        printf("your informations:\n");
        printf(" first name: %s \n last name: %s \n adresse: %s \n tel num: %s \n date of birth : %d/%d/%d \n ID: 0000000%d",cl.nom,cl.prenom,cl.adresse,cl.tel,cl.date.d,cl.date.m,cl.date.y,cl.id);
        cl.id++;
    }

问题是当我添加第一个客户时,我不知道如何在不使用文件的情况下存储我想要保存的信息。我是初学者,我知道我在做什么可能是错误的,但我正在尽力制作这段代码

int main()
    {
int a,age;
char t[100];
printf("----------- menu ------------\n");

printf("add  customer : 1\n");

printf("remove customer : 2\n");
    printf("search for customer : 3\n");
        scanf("%d",&a);
    switch(a){
   case(1):ajouter(a);break;

    }

return 0;
    }

我还没有完成

标签: carrays

解决方案


致敬,

如果我理解得很好,您希望将客户的数据存储在 RAM 中的数组中。我相信您使用的是 C,因此向量并不是一个真正的选择。因此,您可以选择拥有一个固定大小的数组,这在某些情况下可能有用但通常不会,或者拥有一个动态数组,这在开始时可能有点难以理解,但你不应该有太多麻烦。如果一个固定大小的数组适合你,这里有一个例子说明你是如何做到的:

//Declaring the client array
#define nClientsTableau 100
int nClients = 0;
client clients[nClientsTableau];
...
//Adding a new client, keep in mind it's just an example
ajouter();
clients[nClients] = cl;
nClients++;
if(nClients == nClientsTableau) printf("Max amount of clients reached");

然后对于第二个选项,构建一个动态数组。存在不同的方法,这是为您的代码执行它的简单方法:

//Declaring the client array
client* clients = NULL;
client* clients2 = NULL;
int nClients = 0

//Adding a new client
ajouter();
nClients++;

clients2 = (client*)realloc(clients, nClients * sizeof(client));

clients = clients2; //NOTE: You should probably check for clients2 not being NULL first
clients[nClients - 1] = cl;

//Ending the program
free(clients);

我真诚地希望这会有所帮助。除此之外,我想告诉您,您的代码非常适合初学者,只需尝试一些命名约定即可。


推荐阅读