Fonction d'extraction en C

nrgumn Messages postés 10 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 17 mars 2005 - 5 janv. 2005 à 20:03
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 7 janv. 2005 à 19:46
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

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 janv. 2005 à 20:19
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/
0
nrgumn Messages postés 10 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 17 mars 2005
5 janv. 2005 à 20:26
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
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 janv. 2005 à 20:41
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/
0
nrgumn Messages postés 10 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 17 mars 2005
6 janv. 2005 à 00:57
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
0

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

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
6 janv. 2005 à 09:13
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
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
7 janv. 2005 à 19:46
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/
0
Rejoignez-nous