Comment à l'aide d'une fonction je peux supprimer les espaces (’\t’,’\n’,’ ’) présents au début d’une chaine?
J'aimerai pouvoir lire la chaine avec la fonction gets mais aussi utiliser la fonction isspace de la bibliothèque ctype.h
Version imprimable
Comment à l'aide d'une fonction je peux supprimer les espaces (’\t’,’\n’,’ ’) présents au début d’une chaine?
J'aimerai pouvoir lire la chaine avec la fonction gets mais aussi utiliser la fonction isspace de la bibliothèque ctype.h
Je te conseille d'utiliser fgets plutôt que gets :)
Pour les supprimer il suffit de faire une boucle (si tu veux faire toute la chaîne) ou alors de tester que le premier caractère (ce que tu veux apparemment) et de décaler ta chaîne à gauche chaque fois que tu rencontres un espace.
isspace renvoie 0 si ce n'est pas un espace, tabulation etc...
Une valeur non null autrement.
Ce lien parle d'un probleme assez proche du tien. J'espere que tu pourra t'en inspirer :
http://www.developpez.net/forums/d83...aille-tableau/
Peut-être je n'ai pas très bien compris mais ce n'est pas vraiment ce que je cherche à faire. Je ne veux pas analyser un tableau de caractères mais une chaine de caractère.
Comment faire avec fgets et isspace?
Je n'ai pas très bien compris le fonctionnement de isspace.
Fgets se défini comme cecid'après ce que j'ai compris mais je ne sais pas comment le réutiliserCode:
1
2
3
4
5 char chaine[20] ; fgets (chaine,taille,stdin) ; //taille <= 19 chaıne est un tableau de caract`eres. taille est le nombre de caract`eres de chaıne. La fonction fgets rend NULL en cas derreur.
En C une chaine de caractères est un tableau de caractères terminé par '\0'Citation:
Je ne veux pas analyser un tableau de caractères mais une chaine de caractère.
Ok, je vais essayer d'écrire un programmme mais je veux bien que vous me le corrigiez par contre !
8O
Euh, c'est quoi ca ?
On est la pour t'aider, mais on a aucune obligation.
Pour revenir au lien que je t'ai donner. Il va falloir modifier le code : c'est a dire que dans le code, si deux case contigue contienne '\' et '0', on les fusionne, toi ce que tu veux faire, c'est si UNE case contient un caratere particulier ('\0' ...) tu veux la SUPPRIMER (et non la fusionner).
A toi d'adapter tout ca avec ce que tu as sous la main.
Par contre, isspace je connais pas, pourquoi veut tu absolument l'utiliser ?
Tu as essentiellement trois stratégies:
- Tu lis chaîne entrée par l'utilisateur caractère par caractère à l'aide de fgetc() et tu ignores les caractères d'espacement en début de chaîne.
- Tu lis la chaîne entrée par l'utilisateur à l'aide de fgets(), tu repères la position du premier caractère différent d'un espace en testant chaque caractère avec isspace(). Ensuite, tu déplaces la queue de la chaîne en première position à l'aide memmove().
- Tu lis la chaîne entrée par l'utilisateur à l'aide de fgets(), tu repères la position du premier caractère différent d'un espace en testant chaque caractère avec isspace(). Ensuite tu affectes l'adresse de ce caractère à un pointeur de type pointeur sur char que tu pourras ensuite utiliser pour accéder à la chaine sans les espaces de tête.
Thierry