Declaration une chaine de caracter en langage C

Fermé
lotfi de Messages postés 83 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 6 mai 2013 - 16 nov. 2012 à 14:27
 Utilisateur anonyme - 3 déc. 2012 à 08:41
Bonjour Mes amis

je suis ici aujordhui pour m aide de connais l syntax de declaration de chaine de caracter en langage c svp mes amis par exemple pour l entier :
int nom de var ;
euuhh pour le chaine de caracter quoi???
svp aide moi et merci :))

5 réponses

Utilisateur anonyme
16 nov. 2012 à 15:10
Bonjour

Il n'existe pas de chaînes de caractères à proprement parler en C. Il existe des tableaux de caractères qui se déclarent avec la même syntaxe que les autres types de tableaux :
char nom_du_tableau [nb_elements];
1
bhihi emna Messages postés 5 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 3 décembre 2012
3 déc. 2012 à 00:57
il n'y a pas une autre solution pour déclarer une chaine de caractères sans faire un tableau?
0
Utilisateur anonyme
3 déc. 2012 à 08:41
Au risque de me répéter...
Les chaînes de caractères n'existent pas en C, donc tu ne peux pas en déclarer une. Le tableau de char est le moyen habituel pour faire la même chose.
Je crois qu'en C++, il existe un type String, mais je ne connais pas assez le C++ pour en dire davantage.
0
antoinemakan Messages postés 3 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 16 novembre 2012
16 nov. 2012 à 14:45
bjour,
pour le chaine de caractère c'est
char nom;(par exemple);
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 nov. 2012 à 16:27
Perdu, ça c'est un caractère simple... Une chaîne, c'est un tableau de char. Donc char nom[NB];
0
lotfi de Messages postés 83 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 6 mai 2013
16 nov. 2012 à 15:54
par exemple pour variable nom est ce que possible d utiliser type char pour recoit le variable nom un nom par exemple "mohamad"
0
Utilisateur anonyme
16 nov. 2012 à 16:09
Je ne suis pas sûr de comprendre la question. Si tu veux demander si tu as le droit d'appeler une variable mohamad, c'est oui. par exemple :
char mohamad[10];
Si c'et pour déclarer une variable et l'initialiser aec le mot "mohamad", tu peux faire :
char ma_variable[]="mohamad";
qui définit un tableau de 8 caractères ( 7 lettres plus un caractère nul pour marquer la fin)
Et même :
char mohamad[]="mohamad";
0
char nom[]="mohamad";
0
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
16 nov. 2012 à 23:17
strcpy pour copier une chaine 1 vers une chaine 2.

Et char* chaine = (char*) malloc(x*sizeof(char));

Pour une chaine de x caracteres dont tu ne connais pas la taille à l'allocation.


OUBLIEZ PAS LE FREE :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 nov. 2012 à 23:33
Ou mieux, strncpy() qui permet une gestion de la longueur.
Et char *chaine=malloc(x); suffit également.
sizeof(char) fait 1 systématiquement. Et le cast est superflu.
0
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
16 nov. 2012 à 23:40
Le cast est superflu mais permet, d'une part, de se rendre compte de ce qu'on fait, et est beaucoup plus "propre" que le faire naturellement. Pour le "sizeof(char)" je suis d'accord.

Ps: c'est comme la direction vers NULL d'un pointeur sur structure lors de la libération ... pourquoi faire ? bah pour la propreté, c'est une habitude à prendre.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 nov. 2012 à 23:49
Le cast est superflu mais permet, d'une part, de se rendre compte de ce qu'on fait, et est beaucoup plus "propre" que le faire naturellement.
Pas vraiment... Historiquement le cast sur les malloc était fait en ANSI lorsque le type void* n'existait pas. Depuis que le void* existe, il est inutile de caster et est même déconseillé. Certains compilateurs masqueraient en effet la non inclusion de l'entête malloc.h...

c'est comme la direction vers NULL d'un pointeur sur structure lors de la libération ... pourquoi faire ? bah pour la propreté, c'est une habitude à prendre.
Là c'est différent. Effectivement, c'est une bonne habitude de prendre. Et pour plusieurs raisons.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lotfi de Messages postés 83 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 6 mai 2013
18 nov. 2012 à 15:41
moi je souhaite de declarer une chaine de caracter qui recoit cette msg la "bonjour appele mois svp " ce sa mon objectif et merci :))
0
Utilisateur anonyme
18 nov. 2012 à 16:22
On t'a déjà donné la réponse vendredi.
0