Besoin d'aide pour exo en c

pif -  
 pif -
Bonjour a tous,

je suis en train d' apprendre le language C, mais je bloque sur un exo.
Si quelqu'un pouvait m'aider, ça serait sympa.

Voici le sujet:

Ecrire un programme qui lit une ligne tapée au clavier et affiche en majuscules les initiales des mots qu'elle contient

en entrée ----> exemple de texte avec des minuscules et des espaces

en sortie ---->EDTADMEDE

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main ()
{
char clavier[100];
char str[100];
char * pch;
char * separateur= ",";
char mot1;
char mot2;

printf("Entrer votre texte\n");
scanf("%s",&clavier);
printf("\n");
pch = strtok (clavier,separateur);
while (pch != NULL)
{
mot1=pch[0];
mot2=toupper(mot1);
printf ("%c",mot2);
pch = strtok (NULL,separateur);
}

printf("\n");
system("pause");
return 0;

Mon souci est que ce programme fonctionne si je met comme separateur une virgule, mais je bloque pour remplacer la virgule par l'espace

Merci par avance

Dev C++
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    essaie ça
    #include<stdio.h>
    #define DEDANS 1
    #define DEHORS 0
    
    int main ()
    {
      int c, test;
      test = DEHORS;
    
      while((c=getchar()) != EOF){
        if(c==' ' || c == '\t' || c == '\n')
          test = DEHORS;
        else if(test == DEHORS){
                test = DEDANS;
                printf("%c",toupper(c));
        }
      }
      return 0;
    }
    
    0
    1. pif
       
      Tout d'abord, merci pour ta reponse, cela fonctionne tres bien. Quand j'aurai 5 min j'essayerai de comprendre ton prog.
      0
  2. le père
     
    Bonjour

    Ton programme est presque parfait, mais scanf ("%s",&clavier) arrête l'analyse sur le 1er espace ! donc clavier ne centient que le début de ta ligne jusqu'au 1er espace
    remplace par gets(clavier) qui lit tout jusqu'à la fin de la ligne
    0
    1. pif
       
      Merci pour ton explication. la modif est concluante.
      0