typedef struct {
char Key[13];
int Nb;
uint *List;
} List
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
ListTri **Ti_Se;
void foo(void)
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
La, c'est pareil. Pas besoin de cast pour ton malloc:
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Tu m'expliques ? Tu reserves treize caracteres pour le champ key et tu
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
idem:
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Pour le realloc, c'est encore plus subtil que pour le malloc. Que se
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
ListTri **Ti_Se;
void foo(void)
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
La, c'est pareil. Pas besoin de cast pour ton malloc:
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Tu m'expliques ? Tu reserves treize caracteres pour le champ key et tu
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
idem:
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Pour le realloc, c'est encore plus subtil que pour le malloc. Que se
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
ListTri **Ti_Se;
void foo(void)
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
La, c'est pareil. Pas besoin de cast pour ton malloc:
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Tu m'expliques ? Tu reserves treize caracteres pour le champ key et tu
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
idem:
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Pour le realloc, c'est encore plus subtil que pour le malloc. Que se
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
ListTri **Ti_Se;
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Mon code est visiblement faux (pas pour moi sinon je poserai pas la
question)
Lorsque je j'etends la zone memoire du champs List de la structure,
j'ecrase
la valeur initiale du champ.
Que faut il ecrit pour que ce soit bon ???
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
ListTri **Ti_Se;
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Mon code est visiblement faux (pas pour moi sinon je poserai pas la
question)
Lorsque je j'etends la zone memoire du champs List de la structure,
j'ecrase
la valeur initiale du champ.
Que faut il ecrit pour que ce soit bon ???
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
ListTri **Ti_Se;
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Mon code est visiblement faux (pas pour moi sinon je poserai pas la
question)
Lorsque je j'etends la zone memoire du champs List de la structure,
j'ecrase
la valeur initiale du champ.
Que faut il ecrit pour que ce soit bon ???
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
t'economiser de la saisie (dans le meme esprit que l'immonde, et a
eviter, uint) ?
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
t'economiser de la saisie (dans le meme esprit que l'immonde, et a
eviter, uint) ?
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
t'economiser de la saisie (dans le meme esprit que l'immonde, et a
eviter, uint) ?
In 'fr.comp.lang.c', Bertrand Mollinier Toublet
wrote:As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
t'economiser de la saisie (dans le meme esprit que l'immonde, et a
eviter, uint) ?
Je ne trouve pas que 'uchar', 'uint' et 'ulong' soient immondes. Ils sont
clairs et facilitent emploi, codage et relecture. Bien sûr, il faut s'en
tenir à des définitions évidentes.
Extrait de ma bibliothèque perso:
typedef unsigned char uchar;
typedef signed char schar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
Djihad !!
In 'fr.comp.lang.c', Bertrand Mollinier Toublet
<bertrand.mollinierNOSPAMtoublet@enst-bretagne.fr> wrote:
As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
t'economiser de la saisie (dans le meme esprit que l'immonde, et a
eviter, uint) ?
Je ne trouve pas que 'uchar', 'uint' et 'ulong' soient immondes. Ils sont
clairs et facilitent emploi, codage et relecture. Bien sûr, il faut s'en
tenir à des définitions évidentes.
Extrait de ma bibliothèque perso:
typedef unsigned char uchar;
typedef signed char schar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
Djihad !!
In 'fr.comp.lang.c', Bertrand Mollinier Toublet
wrote:As-tu reellement besoin d'un typedef, ou bien n'est ce que pour
t'economiser de la saisie (dans le meme esprit que l'immonde, et a
eviter, uint) ?
Je ne trouve pas que 'uchar', 'uint' et 'ulong' soient immondes. Ils sont
clairs et facilitent emploi, codage et relecture. Bien sûr, il faut s'en
tenir à des définitions évidentes.
Extrait de ma bibliothèque perso:
typedef unsigned char uchar;
typedef signed char schar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
Djihad !!
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Tu m'expliques ? Tu reserves treize caracteres pour le champ key et tu
essayes de lui en faire bouffer 29 ?!?
sprintf(ti_se[0]->key, "%6.6i", 12345);
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Tu m'expliques ? Tu reserves treize caracteres pour le champ key et tu
essayes de lui en faire bouffer 29 ?!?
sprintf(ti_se[0]->key, "%6.6i", 12345);
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Tu m'expliques ? Tu reserves treize caracteres pour le champ key et tu
essayes de lui en faire bouffer 29 ?!?
sprintf(ti_se[0]->key, "%6.6i", 12345);
In 'fr.comp.lang.c', David Roman CESR wrote:typedef struct {
char Key[13];
int Nb;
uint *List;
} List
Manque un ';'ListTri **Ti_Se;
'ListTri' non défini.memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
'Ti_Se' n'a jamais été initialisé. C'est le UB. Si c'est une variable locale
(recommandé en autre pour la raison qui suit), tu pourrais avoir un warning
genre 'utilisation d'une variable non initialisée' si ton compilateur est
bien reglé.
Pas la peine de regarder le reste. Il faut déjà corriger ça.if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Mon code est visiblement faux (pas pour moi sinon je poserai pas la
question)
Lorsque je j'etends la zone memoire du champs List de la structure,
j'ecrase
la valeur initiale du champ.
Que faut il ecrit pour que ce soit bon ???
Déjà, enlever tous ces cast inutiles qui ne font que brouiller le message.
Ensuite retravailler un peu la présentation, qu'on y voit clair (je
recommande GNUIndent). Apprendre à couper les lignes longues proprement, et
pas à la barbare, mettre des espaces ...
Définir ce qui ne l'est pas, initialiser les pointeurs qui ne le sont pas...
--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', David Roman CESR <roman@cesr.fr> wrote:
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
Manque un ';'
ListTri **Ti_Se;
'ListTri' non défini.
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
'Ti_Se' n'a jamais été initialisé. C'est le UB. Si c'est une variable locale
(recommandé en autre pour la raison qui suit), tu pourrais avoir un warning
genre 'utilisation d'une variable non initialisée' si ton compilateur est
bien reglé.
Pas la peine de regarder le reste. Il faut déjà corriger ça.
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Mon code est visiblement faux (pas pour moi sinon je poserai pas la
question)
Lorsque je j'etends la zone memoire du champs List de la structure,
j'ecrase
la valeur initiale du champ.
Que faut il ecrit pour que ce soit bon ???
Déjà, enlever tous ces cast inutiles qui ne font que brouiller le message.
Ensuite retravailler un peu la présentation, qu'on y voit clair (je
recommande GNUIndent). Apprendre à couper les lignes longues proprement, et
pas à la barbare, mettre des espaces ...
Définir ce qui ne l'est pas, initialiser les pointeurs qui ne le sont pas...
--
-ed- emdelYOURBRA@noos.fr [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', David Roman CESR wrote:typedef struct {
char Key[13];
int Nb;
uint *List;
} List
Manque un ';'ListTri **Ti_Se;
'ListTri' non défini.memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
'Ti_Se' n'a jamais été initialisé. C'est le UB. Si c'est une variable locale
(recommandé en autre pour la raison qui suit), tu pourrais avoir un warning
genre 'utilisation d'une variable non initialisée' si ton compilateur est
bien reglé.
Pas la peine de regarder le reste. Il faut déjà corriger ça.if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Mon code est visiblement faux (pas pour moi sinon je poserai pas la
question)
Lorsque je j'etends la zone memoire du champs List de la structure,
j'ecrase
la valeur initiale du champ.
Que faut il ecrit pour que ce soit bon ???
Déjà, enlever tous ces cast inutiles qui ne font que brouiller le message.
Ensuite retravailler un peu la présentation, qu'on y voit clair (je
recommande GNUIndent). Apprendre à couper les lignes longues proprement, et
pas à la barbare, mettre des espaces ...
Définir ce qui ne l'est pas, initialiser les pointeurs qui ne le sont pas...
--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
ListTri **Ti_Se;
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Ca devrait passer avec les corrections d'allocation initiales
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
ListTri **Ti_Se;
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Ca devrait passer avec les corrections d'allocation initiales
typedef struct {
char Key[13];
int Nb;
uint *List;
} List
ListTri **Ti_Se;
memset(Ti_Se,NULL,nEltsMax*sizeof(ListTri));
if (Ti_Se[0]==NULL) {
Ti_Se[0]=(ListTri *) malloc(sizeof(ListTri));
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
Ti_Se[0]->Nb1;
Ti_Se[0]->List=(uint *) malloc(sizeof(uint));
Ti_Se[0]->List[0] ;
Ti_Se[0]->List=(uint *) realloc(Ti_Se[0]->List,2*sizeof(uint));
Ti_Se[0]->List[1]0;
printf("AAA %i %s %i
%in",Ti_Se[0]->Nb,Ti_Se[0]->Key,Ti_Se[0]->List[0],Ti_Se[0]->List[1]);
}
Ca devrait passer avec les corrections d'allocation initiales
[...]
typedef struct {
char Key[13];
int Nb;
uint *List;
} ListTri;
[...]
//Renseignement de la structure
sprintf(&Ti_Se[1]->Key[0],"%6.6i%6.6i",1234546,1234546);
printf("n");
[...]
}
[...]
typedef struct {
char Key[13];
int Nb;
uint *List;
} ListTri;
[...]
//Renseignement de la structure
sprintf(&Ti_Se[1]->Key[0],"%6.6i%6.6i",1234546,1234546);
printf("n");
[...]
}
[...]
typedef struct {
char Key[13];
int Nb;
uint *List;
} ListTri;
[...]
//Renseignement de la structure
sprintf(&Ti_Se[1]->Key[0],"%6.6i%6.6i",1234546,1234546);
printf("n");
[...]
}
Bon j'ai repris mon code, j'espere avoir ete un peu meilleur ...?
#include <stdio.h>
#include <malloc.h>
#include <errno.h>
#include <sys/types.h>
Est ce que la je suis bon pour obtenir mon diplome de programmeur C ????
Merci de ppour cos remarque.
Bon j'ai repris mon code, j'espere avoir ete un peu meilleur ...?
#include <stdio.h>
#include <malloc.h>
#include <errno.h>
#include <sys/types.h>
Est ce que la je suis bon pour obtenir mon diplome de programmeur C ????
Merci de ppour cos remarque.
Bon j'ai repris mon code, j'espere avoir ete un peu meilleur ...?
#include <stdio.h>
#include <malloc.h>
#include <errno.h>
#include <sys/types.h>
Est ce que la je suis bon pour obtenir mon diplome de programmeur C ????
Merci de ppour cos remarque.
Je suis un bleu en C, mais avec tous le respect que je dois a un maitre du
C
je voudrais te faire remaquer que
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
a pour resultat la chaine suivante '123456123456' soit 12 caracteres + le
caractere de fin
ce qui fait bien 13 caracteres au total. SI SI essayes le tu verras par toi
meme.
Je suis un bleu en C, mais avec tous le respect que je dois a un maitre du
C
je voudrais te faire remaquer que
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
a pour resultat la chaine suivante '123456123456' soit 12 caracteres + le
caractere de fin
ce qui fait bien 13 caracteres au total. SI SI essayes le tu verras par toi
meme.
Je suis un bleu en C, mais avec tous le respect que je dois a un maitre du
C
je voudrais te faire remaquer que
sprintf(Ti_Se[0]->Key,"%6.6i%6.6i",1234546,1234546);
a pour resultat la chaine suivante '123456123456' soit 12 caracteres + le
caractere de fin
ce qui fait bien 13 caracteres au total. SI SI essayes le tu verras par toi
meme.