Langage c

bonjour
je cherche le code pour remplacer ts caractere precedé d'un espace par sa majuscule
merci
une debutante en langage c

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. moi je proposerai de le faire en caml ca serait bien mieux, ca elevrai enfin le niveau de nos amateurs, car ne pas coder en C avec des pointeurs, faut pas etre doue.
    1. un de mes potes pariculierement reloud me dit que les pointeurs c est complique.
      je reecris mais c est moins beau :(

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

      void remplace(char *string)
      {
      unsigned int i;

      for (i = 0; string[i] != '0'; i++)
      {
      if (string[i] == ' ')
      string[i +1] = toupper(string[i + 1]);
      }
      }

      int main(int argc, char *argv[])
      {

      remplace(argv[1]);
      puts(argv[1]);
      return 0;
      }

      $gcc -Wall -ansi -pedantic test.c -o tutu
      $./tutu 'pouet est tres beau'
      pouet Est Tres Beau

      --
      pouet
      1. Amis de la simplicité bonjour !

        je propose de faire une boucle qui parcours la chaine de caractère. A chaque tour de boucle faire un test :
        si c un espace, alors faire un nouveau test :

        if(toupper(chaine[compteur-1])
        {
        chaine[compteur-1]=toupper(chaine[compteur-1]);
        }

        A+

        <------Galfus------>
        In penguin we trust
        1. salut,

          c est pas simple, tu fais un test inutile.
          ca c est simple:
          *ptr = toupper(*ptr);

          et accessoirement ton code est faux.
          il est dit "_precede_ d un espace".

          --
          pouet
        2. @pouetdsl,
          je voulais dire +1...
          et je vois pas pkoi j'ai 1 test de trop : 1 test pour vérifier que c un espace et un autre pour vérifier que la lettre n'est pas déjà en maj

          <------Galfus------>
          In penguin we trust
        3. @Galfusextrait du man de toupper:
          RETURN VALUES
          If the argument is a lower-case letter, the toupper() function returns
          the corresponding upper-case letter if there is one; otherwise the argu-
          ment is returned unchanged.

          --
          pouet
      2. Un ptit truc pour la clarté en C : n'utilise pas le code ASCII, utilise 'A' pour le code ASCII de 'A' par exemple

        @++

        Vous hésitez entre Linux et Windows?
        Vous voulez dépenser du temps ou de l'argent ?
        1. pour la clarte, oui. mais pas seulement.
          toutes les machines n ont pas un jeu de caractere ASCII.
          croire que 'a' = 64 est une erreur, de la meme maniere que croire que
          'A' - 'a' = 32
          pour le probleme pose, il _faut_ utiliser toupper().

          --
          pouet
      3. Bonjour,
        Alors il faut d'abord commencer par construire l'algorithme. Pour résoudre ce problème.

        quelques éléments en vrac :
        Recherché le caractère ' '
        ensuite le caractère suivant et remplacé par le caractère qui se trouve 32 place avant la lettre en minuscule.

        exemple
        A : 65
        a : 97

        x: 120
        X: 88

        rappel: un caractère est représenté par un entier dans la table ascii
        exemple
        for(int i=0;i<255;i++)
        println("%c"i);

        Si ça peut aider ...
        1. merci pour ta reponse
          j'ai étudié cette possibilité mais comment recuperer ma chaine de caractere une fois modifiée ?
        2. @k...Si je ne dis pas de c***ie et c'est pas gagné en c.
          mais en C un chaine de caractères est un tableau de caractère char[] donc tu peux l'utiliser sous cette forme.
          non ??
      4. bonjour,

        je propose:
        void remplace(char *str)
        {
        char *ptr;
        ptr = strchr(str, ' ');
        if (ptr && (ptr + 1) != '\0')
        *ptr = toupper(*ptr);
        }
        il manque une boucle evidemment...

        --
        pouet
        1. Ouais bien sur ...
          Pourquoi faire simple quand on peux faire compliqué ?
        2. @Derrickpeux tu exprimer clairement ta pensee s il te plait?

          --
          pouet