Langage C: Initiale du 1er mot ?
Résolu/Fermé
Le GeekdesGeeks
Messages postés
288
Date d'inscription
lundi 9 août 2010
Statut
Membre
Dernière intervention
13 mars 2011
-
Modifié par Le GeekdesGeeks le 29/01/2011 à 09:59
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 29 janv. 2011 à 14:20
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 29 janv. 2011 à 14:20
A voir également:
- Langage C: Initiale du 1er mot ?
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Delphi (langage) - Télécharger - Langages
3 réponses
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
Modifié par Hxyp le 29/01/2011 à 11:25
Modifié par Hxyp le 29/01/2011 à 11:25
Bonjour,
J'ai utilisé un int qui se met à 1 lorsqu'il rencontre une lettre et se remet à 0 lorsqu'il rencontre un espace comme ça il peut prendre la première lettre tout en récupérant celles qui se trouvent juste après un espace :
Ce serait plus simple en utilisant une chaine de caractère vous pourriez alors la parcourir de long en large après la saisie complétée.
J'ai utilisé un int qui se met à 1 lorsqu'il rencontre une lettre et se remet à 0 lorsqu'il rencontre un espace comme ça il peut prendre la première lettre tout en récupérant celles qui se trouvent juste après un espace :
int main() { char lettreLu=' '; int tmp=0; while (lettreLu != '\n') { lettreLu=getchar(); if(lettreLu!=' ') { if(!tmp) { if (lettreLu >= 'a' && lettreLu <= 'z') putchar(lettreLu-32); else putchar(lettreLu); tmp=1; } } else { tmp=0; } } printf( "\n"); return 0; }
Ce serait plus simple en utilisant une chaine de caractère vous pourriez alors la parcourir de long en large après la saisie complétée.
Le GeekdesGeeks
Messages postés
288
Date d'inscription
lundi 9 août 2010
Statut
Membre
Dernière intervention
13 mars 2011
49
29 janv. 2011 à 12:30
29 janv. 2011 à 12:30
Un grand merci Hxyp, le programme fonctionne à merveille !
Je n'ai pas utilisé de chaîne de caractère car je débute en C et ce n'était pas dans la logique de l'apprentissage, celà va venir plus tard .
Je n'ai pas utilisé de chaîne de caractère car je débute en C et ce n'était pas dans la logique de l'apprentissage, celà va venir plus tard .
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
29 janv. 2011 à 14:20
29 janv. 2011 à 14:20
De rien ça m'a permis de me mettre mon cerveau à jour. Pour tout dire je n'avais jamais utiliser la console pour récupérer une chaine alors j'ai un peu galérer depuis tout à l'heure entre le getchar qui bloque le gets qui n'est pas conforme et le scanf("%s"...) enfin tout d'même réussi à pondre une fonction pour récupérer la chaine taper sans se casser la tête à chaque fois! je vous la partage (au cas où!) :
elle retourne la taille de la chaine entrée en console; en paramètre elle prend un tableau de char et sa taille_max pour ne pas dépasser la mémoire allouée et ajoute un caractère null (\0) à la fin de la chaine c'est donc taille_max-1 du tableau qui est utilisable. Et fin si on a un saut de ligne \n.
exemple d'utilisation :
size_t get_chaine(char *tab,int taille) { unsigned int i=0; while(i<taille-1) { scanf("%c",&tab[i]); if(tab[i]=='\n'){break;} i++; } tab[i]=0; return i; }
elle retourne la taille de la chaine entrée en console; en paramètre elle prend un tableau de char et sa taille_max pour ne pas dépasser la mémoire allouée et ajoute un caractère null (\0) à la fin de la chaine c'est donc taille_max-1 du tableau qui est utilisable. Et fin si on a un saut de ligne \n.
exemple d'utilisation :
int main() { char buff[80]; int a; a=get_chaine(buff,80); printf("chaine : %s\ntaille : %d\n",buff,a); return 0; }