Language c
brain2
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
brain2 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
brain2 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour, je veux savoir la signification de cette ligne
comb = (char *)malloc((lg)*sizeof(char)+1);
SVP c urgent , je ss debutant en c
Bonjour, je veux savoir la signification de cette ligne
comb = (char *)malloc((lg)*sizeof(char)+1);
SVP c urgent , je ss debutant en c
A voir également:
- Language c
- Windows display language french - Guide
- Vistalizator language pack windows 7 - Télécharger - Traduction
- Language binaire - Guide
- Photoshop cs6 french language pack - Forum Photoshop
- Autocad 2008 language pack french - Forum AutoCAD
1 réponse
Bonsoir
Donc pour l'explication (Je complète par quelques lignes...)
Dans cette ligne est déclaré un pointer de type "char" (ou, pour faire plus court: "char *")
Le but final est de pouvoir lire/écrire plusieurs variables de type "char"
On peu facilement déduite ici que ce sera une chaine de texte...
Par contre, en l'état, cette variables est inutilisable car elle n'est pas allouer (rappel, un pointer indique une adresse en mémoire...)
Hors ici, elle est NULL
Il faut donc l'initialiser/l'allouer afin de pouvoir c'en servir...
C'est le but de votre ligne...
Cette ligne vas préparer la variable (lui assigner un espace mémoire.) à l'aide de la fonction malloc (Memory ALLOCate)
Pour les détailles c'est asse simple...
comb = (char *)malloc((lg)*sizeof(char)+1);
... = (char *)
La fonction malloc renvoie une valeur de type "void *", hors, nous souhaitons l'assigner a un "char *", il faut donc CASTER (transformer un type en un autre, pour faire court) la valeur retourner
C'EST LE BUT DE CETTE LIGNE...
malloc((lg)*sizeof(char)+1)
Ici, nous indiquons a la fonction malloc de combien de mémoire nous avons besoin!
Soit "lg" (un nombre j'imagine) fois la taille de UNE variable de type "char" (sizeof(char)), logique, on veux allouer un "char *"
A cette taille est rajouter 1 ( + 1) qui (je pense) sera mis à zéro.
Appelons ça une marge de sécurité... Asse commune quand on alloue de la mémoire pour une chaine de texte (en effet de nombreuse fonction demande des chaine de texte terminer par un '0' (null terminated)
Par contre, la logique voudrais que l'on place le "+ 1" juste après le "lg"
Plus prudent. Car il faut UN caractère de plus pour le "0" de fin de chaine, non pas de fin de mémoire (Ici, vue que sizeof(char) vaut 1, ca ne change rien mais c'est une bonne habitude à prendre...)
Voila, j'espère avoir été asse clair et vous avoir aider un peu
Bien à vous
Donc pour l'explication (Je complète par quelques lignes...)
Dans cette ligne est déclaré un pointer de type "char" (ou, pour faire plus court: "char *")
char *comb = NULL;
Le but final est de pouvoir lire/écrire plusieurs variables de type "char"
On peu facilement déduite ici que ce sera une chaine de texte...
Par contre, en l'état, cette variables est inutilisable car elle n'est pas allouer (rappel, un pointer indique une adresse en mémoire...)
Hors ici, elle est NULL
Il faut donc l'initialiser/l'allouer afin de pouvoir c'en servir...
C'est le but de votre ligne...
comb = (char *)malloc((lg)*sizeof(char)+1);
Cette ligne vas préparer la variable (lui assigner un espace mémoire.) à l'aide de la fonction malloc (Memory ALLOCate)
Pour les détailles c'est asse simple...
comb = (char *)malloc((lg)*sizeof(char)+1);
... = (char *)
La fonction malloc renvoie une valeur de type "void *", hors, nous souhaitons l'assigner a un "char *", il faut donc CASTER (transformer un type en un autre, pour faire court) la valeur retourner
C'EST LE BUT DE CETTE LIGNE...
malloc((lg)*sizeof(char)+1)
Ici, nous indiquons a la fonction malloc de combien de mémoire nous avons besoin!
Soit "lg" (un nombre j'imagine) fois la taille de UNE variable de type "char" (sizeof(char)), logique, on veux allouer un "char *"
A cette taille est rajouter 1 ( + 1) qui (je pense) sera mis à zéro.
Appelons ça une marge de sécurité... Asse commune quand on alloue de la mémoire pour une chaine de texte (en effet de nombreuse fonction demande des chaine de texte terminer par un '0' (null terminated)
Par contre, la logique voudrais que l'on place le "+ 1" juste après le "lg"
comb = (char *)malloc((lg + 1) * sizeof(char));
Plus prudent. Car il faut UN caractère de plus pour le "0" de fin de chaine, non pas de fin de mémoire (Ici, vue que sizeof(char) vaut 1, ca ne change rien mais c'est une bonne habitude à prendre...)
Voila, j'espère avoir été asse clair et vous avoir aider un peu
Bien à vous
brain2
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
3
merci SchSoftware votre explication m'a été très utile