Je cite pour l'exemple un bug surprenant que j'ai rencontré plusieurs fois
avec des programmeurs pourtant plus débutants :
char* fich_s = malloc(strlen("Nouvelle chaine" + 1));
Je cite pour l'exemple un bug surprenant que j'ai rencontré plusieurs fois
avec des programmeurs pourtant plus débutants :
char* fich_s = malloc(strlen("Nouvelle chaine" + 1));
Je cite pour l'exemple un bug surprenant que j'ai rencontré plusieurs fois
avec des programmeurs pourtant plus débutants :
char* fich_s = malloc(strlen("Nouvelle chaine" + 1));
"Emmanuel Delahaye" wrote in message
news:Florent Clairambault wrote on 06/10/04 :En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
Voila, j'ai l'étrange impression, que c'est pas encore gagné pour tout
lemonde la programmation...
Ce prof d'info mérite le goudron et les plumes...
pour char* fich_s = malloc(strlen("Nouvelle chaine") + 1);
Je cite pour l'exemple un bug surprenant que j'ai rencontré plusieurs fois
avec des programmeurs pourtant plus débutants :
char* fich_s = malloc(strlen("Nouvelle chaine" + 1));
Ah, oui. La bonne formule c'est:
"Emmanuel Delahaye" <emdel@YOURBRAnoos.fr> wrote in message
news:mn.34857d4a28c23aca.15512@YOURBRAnoos.fr...
Florent Clairambault wrote on 06/10/04 :
En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
Voila, j'ai l'étrange impression, que c'est pas encore gagné pour tout
le
monde la programmation...
Ce prof d'info mérite le goudron et les plumes...
pour char* fich_s = malloc(strlen("Nouvelle chaine") + 1);
Je cite pour l'exemple un bug surprenant que j'ai rencontré plusieurs fois
avec des programmeurs pourtant plus débutants :
char* fich_s = malloc(strlen("Nouvelle chaine" + 1));
Ah, oui. La bonne formule c'est:
"Emmanuel Delahaye" wrote in message
news:Florent Clairambault wrote on 06/10/04 :En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
Voila, j'ai l'étrange impression, que c'est pas encore gagné pour tout
lemonde la programmation...
Ce prof d'info mérite le goudron et les plumes...
pour char* fich_s = malloc(strlen("Nouvelle chaine") + 1);
Je cite pour l'exemple un bug surprenant que j'ai rencontré plusieurs fois
avec des programmeurs pourtant plus débutants :
char* fich_s = malloc(strlen("Nouvelle chaine" + 1));
Ah, oui. La bonne formule c'est:
En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
C'est plutôt :
fich_s = malloc(strlen("Nouvelle chaine") + 1);
Le cast (char*) est inutile, sauf si tu recherches une compatibilité
C++, ce qui est mal vu par certains ici.
Il faut allouer 1 caractère de plus que la longueur de la chaine pour
stocker le ' ' terminal.
Le cast est aussi "utile" pour celui qui l'utilise que le
En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
C'est plutôt :
fich_s = malloc(strlen("Nouvelle chaine") + 1);
Le cast (char*) est inutile, sauf si tu recherches une compatibilité
C++, ce qui est mal vu par certains ici.
Il faut allouer 1 caractère de plus que la longueur de la chaine pour
stocker le ' ' terminal.
Le cast est aussi "utile" pour celui qui l'utilise que le
En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
C'est plutôt :
fich_s = malloc(strlen("Nouvelle chaine") + 1);
Le cast (char*) est inutile, sauf si tu recherches une compatibilité
C++, ce qui est mal vu par certains ici.
Il faut allouer 1 caractère de plus que la longueur de la chaine pour
stocker le ' ' terminal.
Le cast est aussi "utile" pour celui qui l'utilise que le
"Florent Clairambault" wrote in message
news:ck0h52$mtn$En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
Voila, j'ai l'étrange impression, que c'est pas encore gagné pour tout le
monde la programmation...
Effectivement, il manquera un octet au tableau alloué par malloc pour
contenir le NUL final de la chaine "Nouvelle chaine".
Pour cet usage, utlise:
char *fich_s = strdup("Nouvelle chaine");
Et il faut naturellement veiller à la libérer (free) à bon escient.
Chqrlie.
"Florent Clairambault" <clairamb@ece.fr> wrote in message
news:ck0h52$mtn$1@numur.ece.fr...
En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
Voila, j'ai l'étrange impression, que c'est pas encore gagné pour tout le
monde la programmation...
Effectivement, il manquera un octet au tableau alloué par malloc pour
contenir le NUL final de la chaine "Nouvelle chaine".
Pour cet usage, utlise:
char *fich_s = strdup("Nouvelle chaine");
Et il faut naturellement veiller à la libérer (free) à bon escient.
Chqrlie.
"Florent Clairambault" wrote in message
news:ck0h52$mtn$En fait, un prof d'info m'a dis que c'était :
pour char* fich_s;
fich_s = (char *) malloc(strlen("Nouvelle chaine"));
Voila, j'ai l'étrange impression, que c'est pas encore gagné pour tout le
monde la programmation...
Effectivement, il manquera un octet au tableau alloué par malloc pour
contenir le NUL final de la chaine "Nouvelle chaine".
Pour cet usage, utlise:
char *fich_s = strdup("Nouvelle chaine");
Et il faut naturellement veiller à la libérer (free) à bon escient.
Chqrlie.
C'est juste pour vous dire qu'en gros, pour répondre à ma question, il
aurait suffit de :
fich_s = (char *) malloc(strlen("Nouvelle chaine") + 1)
Je sens une ironie bien compréhensible dans votre message. Mais je ne
C'est juste pour vous dire qu'en gros, pour répondre à ma question, il
aurait suffit de :
fich_s = (char *) malloc(strlen("Nouvelle chaine") + 1)
Je sens une ironie bien compréhensible dans votre message. Mais je ne
C'est juste pour vous dire qu'en gros, pour répondre à ma question, il
aurait suffit de :
fich_s = (char *) malloc(strlen("Nouvelle chaine") + 1)
Je sens une ironie bien compréhensible dans votre message. Mais je ne
A l'inverse, si vous voulez écrire des fichiers nommés sav00000.txt à
sav99999.txt (ou à partir de date et heure, c'est courant), vous aurez
besoin de générer ces noms de façon dynamique. Mais même dans ce cas,
l'utilisation du malloc() est souvent risquée, coûteuse et inutile
quand la taille de la réservation est connue à la compilation. Vous
pouvez vous contenter d'initialiser un tableau de char.
const size_t taille4 = strlen("sortie-autoX.txt") + 1;
const char* tempo1 = "sortie-auto1.txt";
char* tempo2 = "sortie-auto2.txt";
char tempo3[] = "sortie-auto3.txt";
char* tempo4 = malloc(taille4);
/* Non valable
char* tempo5 = "sortieXXXXXX.txt";
*/
char tempo5[] = "sortieXXXXXX.txt";
char* fich_s = "sortie.txt";
puts(fich_s);
fich_s = (char*)tempo1;
puts(fich_s);
fich_s = tempo2;
puts(fich_s);
fich_s = tempo3;
puts(fich_s);
fich_s = &tempo3[0];
puts(fich_s);
strcpy(tempo4, "sortie-auto4.txt"); /*(ou autre modif de la chaîne)*/
fich_s = tempo4;
puts(fich_s);
strcpy(tempo5, "sortie-auto5.txt"); /*(ou autre modif de la chaîne)*/
fich_s = tempo5;
puts(fich_s);
if(tempo4 != NULL) free(tempo4);
un peu tard pour tester un pointeur qu'on a déjà déréférencé !
A l'inverse, si vous voulez écrire des fichiers nommés sav00000.txt à
sav99999.txt (ou à partir de date et heure, c'est courant), vous aurez
besoin de générer ces noms de façon dynamique. Mais même dans ce cas,
l'utilisation du malloc() est souvent risquée, coûteuse et inutile
quand la taille de la réservation est connue à la compilation. Vous
pouvez vous contenter d'initialiser un tableau de char.
const size_t taille4 = strlen("sortie-autoX.txt") + 1;
const char* tempo1 = "sortie-auto1.txt";
char* tempo2 = "sortie-auto2.txt";
char tempo3[] = "sortie-auto3.txt";
char* tempo4 = malloc(taille4);
/* Non valable
char* tempo5 = "sortieXXXXXX.txt";
*/
char tempo5[] = "sortieXXXXXX.txt";
char* fich_s = "sortie.txt";
puts(fich_s);
fich_s = (char*)tempo1;
puts(fich_s);
fich_s = tempo2;
puts(fich_s);
fich_s = tempo3;
puts(fich_s);
fich_s = &tempo3[0];
puts(fich_s);
strcpy(tempo4, "sortie-auto4.txt"); /*(ou autre modif de la chaîne)*/
fich_s = tempo4;
puts(fich_s);
strcpy(tempo5, "sortie-auto5.txt"); /*(ou autre modif de la chaîne)*/
fich_s = tempo5;
puts(fich_s);
if(tempo4 != NULL) free(tempo4);
un peu tard pour tester un pointeur qu'on a déjà déréférencé !
A l'inverse, si vous voulez écrire des fichiers nommés sav00000.txt à
sav99999.txt (ou à partir de date et heure, c'est courant), vous aurez
besoin de générer ces noms de façon dynamique. Mais même dans ce cas,
l'utilisation du malloc() est souvent risquée, coûteuse et inutile
quand la taille de la réservation est connue à la compilation. Vous
pouvez vous contenter d'initialiser un tableau de char.
const size_t taille4 = strlen("sortie-autoX.txt") + 1;
const char* tempo1 = "sortie-auto1.txt";
char* tempo2 = "sortie-auto2.txt";
char tempo3[] = "sortie-auto3.txt";
char* tempo4 = malloc(taille4);
/* Non valable
char* tempo5 = "sortieXXXXXX.txt";
*/
char tempo5[] = "sortieXXXXXX.txt";
char* fich_s = "sortie.txt";
puts(fich_s);
fich_s = (char*)tempo1;
puts(fich_s);
fich_s = tempo2;
puts(fich_s);
fich_s = tempo3;
puts(fich_s);
fich_s = &tempo3[0];
puts(fich_s);
strcpy(tempo4, "sortie-auto4.txt"); /*(ou autre modif de la chaîne)*/
fich_s = tempo4;
puts(fich_s);
strcpy(tempo5, "sortie-auto5.txt"); /*(ou autre modif de la chaîne)*/
fich_s = tempo5;
puts(fich_s);
if(tempo4 != NULL) free(tempo4);
un peu tard pour tester un pointeur qu'on a déjà déréférencé !
"Pierre Maurette" wrote in message
news:
...
[...]
Là franchement, on est plus au niveau de l'ironie : l''explication est fumeuse,
et l'exemple final incompréhensible, je ne vois pas en quoi cette énumération
désordonnée aura le moindre effet pédagogique positif.
Désolé, je n'avais pas réalisé l'importance du fait que le message
"Pierre Maurette" <maurettepierre@wanadoo.fr> wrote in message
news:jm5fm0pvksonlvt5r20nga8qi952o76cri@4ax.com...
...
[...]
Là franchement, on est plus au niveau de l'ironie : l''explication est fumeuse,
et l'exemple final incompréhensible, je ne vois pas en quoi cette énumération
désordonnée aura le moindre effet pédagogique positif.
Désolé, je n'avais pas réalisé l'importance du fait que le message
"Pierre Maurette" wrote in message
news:
...
[...]
Là franchement, on est plus au niveau de l'ironie : l''explication est fumeuse,
et l'exemple final incompréhensible, je ne vois pas en quoi cette énumération
désordonnée aura le moindre effet pédagogique positif.
Désolé, je n'avais pas réalisé l'importance du fait que le message