C 我想存储с;一系列客户中的客户信息
这是用于添加新客户的C 我想存储с;一系列客户中的客户信息,c,arrays,C,Arrays,这是用于添加新客户的 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 fi
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++;
}
我还没做完呢
如果我理解得很好,您希望将客户机的数据存储在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);
我真诚地希望这能有所帮助。除此之外,我想告诉您,您的代码对于初学者来说是非常优秀的,只要尝试使用一些命名约定即可。salt
如果我理解得很好,您希望将客户机的数据存储在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);
我真诚地希望这能有所帮助。除此之外,我想告诉您,您的代码对于初学者来说非常优秀,只要尝试使用一些命名约定即可。如果不是文件,您希望将这些信息保存到哪里?此问题的标题对任何人有何帮助?一个关键错误是没有启用所有警告<代码>字符*名称[30]。。。scanf(“%s”和cl.nom)代码>应该发出警告。明智地使用编译器是提高编码效率的第一步——比这更快。通常人们将这样的数据存储在数据库中,在某种程度上,数据库是一个文件。如果不想深入DBA,可以使用noSQL之类的无服务器数据库。如果不是文件,则希望将这些信息保存在哪里?此问题的标题对任何人有何帮助?一个关键错误是没有启用所有警告<代码>字符*名称[30]。。。scanf(“%s”和cl.nom)代码>应该发出警告。明智地使用编译器是提高编码效率的第一步——比这更快。通常人们将这样的数据存储在数据库中,在某种程度上,数据库是一个文件。如果不想深入DBA,可以使用noSQL之类的无服务器DB。