Fonction d'extraction en C

Signaler
Messages postés
10
Date d'inscription
mardi 4 janvier 2005
Statut
Membre
Dernière intervention
17 mars 2005
-
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
-
Bonjour,
Je recherche une fonction qui pourrait me donner le premier caractère d'un mot. Si possible une fonction qui me retourne le caractère en question et non pas un pointeur sur ce caractère.

merci

Rémy

6 réponses

Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Soit char mot[200] le mot en question.

mot[0] est le 1er caractère.

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Messages postés
10
Date d'inscription
mardi 4 janvier 2005
Statut
Membre
Dernière intervention
17 mars 2005

C'est ce que j'ai fais, mais ça n'a pas marché. Peut-être pouvez vous me dire mon erreur.

char caractere, mot[30];
scanf("%s",&mot);
cararctere = mot[0];
printf("%s",caractere);

Et là, il y a un beau plantage lors de l'affichage.
Une idée ???

++
Rémy
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Ouais une idée :



scanf("%s",&mot); -> Je crois que c'est plutôt scanf("%s", mot); non, pour les chaînes de caractères?




printf("%s",caractere);
-> là par contre c'est printf("%c", caractere); pour afficher un
caractère (sinon t'as putchar(caractere); aussi ^^).



---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Messages postés
10
Date d'inscription
mardi 4 janvier 2005
Statut
Membre
Dernière intervention
17 mars 2005

Bon, après avoir testé tout ça, j'ai réussi à trouvé la panne.

scanf("%s",&mot); => c'est la bonne syntaxe

par contre, le bug venait du printf. Il fallait mettre "%c" et non pas "%s".

Merci pour votre aide
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
char mot[30];
scanf("%s",&mot);
et
scanf("%s",mot);

font la même chose si mot est un tableau statique (taillle connu à la compilation) (mot est déjà un pointeur sur le pemier caractère de la chaîne et faire &mot n'a pas de signification car mot n'est pas une vrai variable mais une constante donnant l'adresse du début du tableau)

Par contre si mot est un pointeur sur le premier caractère d'une chaîne (alouée par malloc ou récupérer par une autre méthode, la première écriture de scanf ne marche pas et fait planter...
char* mot = malloc(30);
ou
char tab[30];
char* mot=tab;

scanf("%s",&mot); => erreur car on donne l'adresse d'un pointeur sur un char* donc un char**

=> conclusion vaut mieux utiliser la 2ème méthode.

avec scanf on trouve églement un autre pb, le dépassement de buffer si on entre trop de caractères, utiliser plutot fgets qui permet de spécifier la taille du buffer
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Intéressant ça ymca2003, j'en savais rien, merci pr l'info :)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/