C语言 我想将客户信息存储在一系列客户中



这用于添加新的客户。

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("                          succesn");
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 : 1n");
printf("remove customer : 2n");
printf("search for customer : 3n");
scanf("%d",&a);
switch(a){
case(1):ajouter(a);break;
}
return 0;
}

我还没有完成

Salut,

如果我理解得很好,您希望将客户端的数据存储在 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);

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

最新更新