IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème fonction capitalyze en C, besoin d'aide..


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Problème fonction capitalyze en C, besoin d'aide..
    Bonjour je cherche a écrire une fonction r_capitalyze qui prend en compte 2 paramètres : une chaîne de charactère et un entier 0 ou 1 ; si l'entier est de 0 alors la fonction doit remplacer les premières lettres de chaque mots de la chaîne par des majuscules et les autres en minuscules et inversement, si l'entier est de 1 la fonction devra renvoyez la chaîne de charactere rentrée en paramètre avec toutes les premières lettres de chaque mots en minuscules et les autres en majuscules, seulement j'en suis encore au début de mon code que j'ai un problème après avoir trouver la premiere lettre du premier mot je vérifie avec une condition qu'elle est en minuscule mais lorsque que je veut la convertire et l'afficher en majuscule rien ne se passe, je vous met mon code ci-dessous votre aide m'aiderais beaucoup a avancer, merci d'avance a vous tous !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
     
    void r_capitalyze(char *str, int order)
    {
      int i = 0;
     
      if(order == 0)
      {
     
     
          while ((str[i] == ' '  || str[i] == '\t'))    // chercher le début du premier mot
            {
            i++;
            }
     
     
          if(str[i] >= 'a' && str[i]<= 'z')         // si le premier charactere est en minuscule
            {
              str[i] -= 32;                           //on le passe en maj
     
              printf("%c",str[i]);
     
            }
     
            else {printf("%c", str[i]);}     // si il est en majuscule on le laisse en majuscule
     
      }      
     
    }
     
        int main()
          {
            r_capitalyze("     noe", 0);
          }

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 594
    Points : 7 786
    Points
    7 786
    Par défaut
    Bonjour,

    Pour le moment, ton code ne gère que la première lettre du premier mot, jamais il ne passe à la lettre suivante.

    Et attention, c'est une chaine de caractère constante qui est passée à ta fonction. La fonction ne pourra donc pas la modifier. Le main() doit être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main()
    {
         char txt[] = "     noe";  // txt contient la copie du texte constant "     noe"
         r_capitalyze( txt, 0 );   // les caractères de txt[] sont modifiables
    }

  3. #3
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Points : 8 663
    Points
    8 663
    Par défaut
    Le code de ta fonction modifie la chaîne de caractère passé en paramètre mais malheureusement cette chaîne est une chaîne littérale et donc non modifiable ce qui occasionne un plantage. (Ça devrait te débloquer pour écrire la suite).


    PS : Pour tester les espaces tabulation et autre tu peux t'aider de la fonction : isspace

    Aussi : au lieu de 32 utilises ('a'-'A')

  4. #4
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par dalfab Voir le message
    Bonjour,

    Pour le moment, ton code ne gère que la première lettre du premier mot, jamais il ne passe à la lettre suivante.

    Et attention, c'est une chaine de caractère constante qui est passée à ta fonction. La fonction ne pourra donc pas la modifier. Le main() doit être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main()
    {
         char txt[] = "     noe";  // txt contient la copie du texte constant "     noe"
         r_capitalyze( txt, 0 );   // les caractères de txt[] sont modifiables
    }


    Merci beaucoup cela a régler mon problème !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec kotlin sur eclipse besoin d'aide
    Par Dinsign dans le forum Kotlin
    Réponses: 2
    Dernier message: 12/02/2021, 17h52
  2. Réponses: 7
    Dernier message: 22/05/2019, 09h21
  3. Réponses: 12
    Dernier message: 05/06/2014, 13h00
  4. Fonction de Coherence, mschoherence, besoin d'aide
    Par souf308 dans le forum Signal
    Réponses: 4
    Dernier message: 28/08/2013, 12h06
  5. Réponses: 1
    Dernier message: 06/05/2011, 22h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo