Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1509 connectés 

  FORUM HardWare.fr
  Programmation

  C ANSI et char *

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C ANSI et char *

n°72113
Combi_A_Ve​ndre
Posté le 14-11-2001 à 13:42:49  profilanswer
 

Quand en C ANSI on fait ça :
 char *c;
 c="zoubouroumouk";
 
 Si on veux ré-afecter c, on doit faire un free et un malloc ?
 
vw.


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
mood
Publicité
Posté le 14-11-2001 à 13:42:49  profilanswer
 

n°72115
BENB
100% Lux.
Posté le 14-11-2001 à 13:50:12  profilanswer
 

Combi_A_Vendre a écrit a écrit :

Quand en C ANSI on fait ça :
 char *c;
 c="zoubouroumouk";
 
 Si on veux ré-afecter c, on doit faire un free et un malloc ?
 
vw.  




ben non... pas de free...
ta chaine literrale elle est statique, tu ne l'a pas allouee dynamiquement... donc pas de free...
 
ensuite la reaffectation de c...
ben ca depend, si tu lui reaffecte une chaine deja existant pas besion d'allouer par un malloc.

n°72118
SoWhatIn22
Posté le 14-11-2001 à 13:54:09  profilanswer
 

Combi_A_Vendre a écrit a écrit :

Quand en C ANSI on fait ça :
 char *c;
 c="zoubouroumouk";
 
 Si on veux ré-afecter c, on doit faire un free et un malloc ?
 
vw.  




 
euh... la tu n'as rien affecté du tout. ta variable c pointe sur une chaine temporaire qui sera ecrasée peut après la srtie de la fonction...
Eventuellement tu peux faire:
char c[] = "zoubouroumouk";
 
le mieux, c'est en effet:
char * c;
c = (char *) malloc(strlen("zoubouroumouk" )+1);
strcpy(c, "zoubouroumouk" );
 
 
quoi qu'il en soit, avec ce que tu as fait, tu ne DOIT PAS faire de free puisque tu n'as pas fait de malloc avant...

n°72120
SoWhatIn22
Posté le 14-11-2001 à 13:55:29  profilanswer
 

damned ...
je me suis fait devancer... :D

n°72127
chrisbk
-
Posté le 14-11-2001 à 14:09:24  profilanswer
 

SoWhatIn22 a écrit a écrit :

 
 
le mieux, c'est en effet:
char * c;
c = (char *) malloc(strlen("zoubouroumouk" )+1);
strcpy(c, "zoubouroumouk" );




 
 
c = strdup("zoubouroumouk" );  
est quand meme plus elegant :D

n°72134
BENB
100% Lux.
Posté le 14-11-2001 à 14:22:31  profilanswer
 

SoWhatIn22 a écrit a écrit :

 
 
euh... la tu n'as rien affecté du tout. ta variable c pointe sur une chaine temporaire qui sera ecrasée peut après la srtie de la fonction...




la variable c sera ecrasee, pas la chaine...
c'est une literrale... en qq sortes un variable globale...
d'ailleurs une modification de cette chaine te le montrera...
car elle restera modifiee jusqu'a la fin du prog... (ou la prochaine modif...
souvent on conseille des les ecrire plutot sous la forme
const char c[]="tototo";....
le const protegant la litterale (c ici) de la modification...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  C ANSI et char *

 

Sujets relatifs
[C++] Comment convertir un double en char?conversion int->char
[ANSI C] Monter mon exe en service ?[C++] Convertir un char[] en Unicode
[C] pourquoi un char** ...[C++] Comment copier un string dans un char[]?
[C] Fonction retournant la valeur ASCII d'un char[JAVA] Trouver le code ASCII d'un char ?
[VC++] unsigned char* / char*[C++] Conversion int to char
Plus de sujets relatifs à : C ANSI et char *


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR