Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我想存储с;一系列客户中的客户信息_C_Arrays - Fatal编程技术网

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。