Langage C: Initiale du 1er mot ?
Résolu/Fermé
Le GeekdesGeeks
Messages postés
287
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
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
287
Date d'inscription
lundi 9 août 2010
Statut
Membre
Dernière intervention
13 mars 2011
52
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;
}