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(" 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;
}
我还没有完成
解决方案
致敬,
如果我理解得很好,您希望将客户的数据存储在 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);
我真诚地希望这会有所帮助。除此之外,我想告诉您,您的代码非常适合初学者,只需尝试一些命名约定即可。
推荐阅读
- notifications - 我正在尝试发出通知以打开和关闭音乐播放器,但它不起作用
- amazon-web-services - Aws Lambda Postman 错误:“消息”:“内部服务器错误”
- javascript - 在浏览器和电子平台上,绘画作品,但在android平台上试图在画布上绘画却不行,这是为什么呢?
- javascript - 无法在 Reactjs 中显示从后端获取的图像
- java - 安装驱动后也无法解决java.sql.SQLException
- google-apps-script - 如何从 Binance API 获取 Binance 的 BTC 价格
- java - 使用 RestHighLevelClient 执行弹性搜索查询的最佳方法是什么
- spring-boot - 使用 Spring Boot 和 thymeleaf 重定向
- python - python根据多数更改字典的值
- solr - Solr [8.8] 重启后将所有集合移动到一个节点