Langage c

k... -  
 pouet -
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

  1. pouet
     
    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
    0
    1. Derrick
       
      Ouais bien sur ...
      Pourquoi faire simple quand on peux faire compliqué ?
      0
      1. pouet > Derrick
         
        peux tu exprimer clairement ta pensee s il te plait?

        --
        pouet
        0
  2. lof. Messages postés 689 Statut Membre 44
     
    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 ...
    0
    1. k...
       
      merci pour ta reponse
      j'ai étudié cette possibilité mais comment recuperer ma chaine de caractere une fois modifiée ?
      0
      1. lof. Messages postés 689 Statut Membre 44 > 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 ??
        0
  3. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    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 ?
    0
    1. pouet
       
      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
      0
  4. Galfus Messages postés 242 Statut Membre 14
     
    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
    0
    1. pouet
       
      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
      0
      1. Galfus Messages postés 242 Statut Membre 14 > pouet
         
        dsl,
        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
        0
      2. pouet > Galfus Messages postés 242 Statut Membre
         
        extrait 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
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pouet
     
    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
    0
  7. pilou
     
    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.
    0