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 :

Pointeur & chaînes de caractéres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Par défaut Pointeur & chaînes de caractéres
    Bonjour,
    voila 1er problème
    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
    #include<stdio.h>
    #include<stdlib.h>
     
    int combienDeE(char mot[]){
      int cpt,i;
      cpt=0;
      i=0;
      while (mot[i]!='\0'){
        if ((mot[i]=='e') ||( mot[i]=='E'))  cpt++;
        i++;
      }
      return cpt;
    }
     
    int combienDe(char mot[],char x){
      int cpt,i;
      cpt=0;
      i=0;
      while (mot[i]!='\0'){
        if (mot[i]==x)  cpt++;
        i++;
      }
      return cpt;
    }
     
    int main(){
      char mot[30];
      char x;
      printf("donnez un mot: ");
      scanf("%s",mot);
      printf("le nombre de e est de:%d\n",combienDeE(mot));
      printf("donnez un caractére:");
      scanf("%c",&x);
      printf("le nombre de %c est de: %d\n",x,combienDe(mot,x));
      return 0;
    }
    le scanf ne fonctione pas, pourquoi?

    second problème d'après ce que j'ai comprit s[]=*s donc pourquoi cela ne fonctionne pas :
    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
    #include<stdio.h>
    #include<stdlib.h>
     
    int combienDeE(char *mot){
      int cpt,i;
      cpt=0;
      i=0;
      while (mot[i]!='\0'){
        if ((mot[i]=='e') ||( mot[i]=='E'))  cpt++;
        i++;
      }
      return cpt;
    }
     
    int combienDe(char *mot,char x){
      int cpt,i;
      cpt=0;
      i=0;
      while (mot[i]!='\0'){
        if (mot[i]==x)  cpt++;
        i++;
      }
      return cpt;
    }
     
    int main(){
      char *mot;
      char x;
      printf("donnez un mot: ");
      scanf("%s",mot);
      printf("le nombre de e est de:%d\n",combienDeE(mot));
      printf("donnez un caractére:");
      scanf("%c",&x);
      printf("le nombre de %c est de: %d\n",x,combienDe(mot,x));
      return 0;
    }
    quel est la librairie pour utiliser tolower et topper?
    merci d'avance pour votre aide !

  2. #2
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    Citation Envoyé par Delnir Voir le message

    quel est la librairie pour utiliser tolower et topper?
    il faut utiliser ctype.h

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    le scanf ne fonctione pas, pourquoi?
    Il fonctionne, mais le deuxième scanf trouve un caractère (le '\n' du scanf précédent) dans le buffer du clavier et le prend comme entrée. Il faut vider le buffer clavier entre les deux scanf. Voir Comment vider le buffer clavier
    second problème d'après ce que j'ai comprit s[]=*s donc pourquoi cela ne fonctionne pas :
    Si s est un tableau alors s[0] == *s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      char *mot;
    ....
      scanf("%s",mot);
    Un pointeur (mot) n'est pas un tableau et ne peut servir à stocker la chaîne de caractères lue par scanf. mot ne peut stocker que l'adresse d'un char
    Il faut avoir char mot[???];

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Par défaut
    merci pour l'aide, ya encore une chose qui ne marche pas c'est topper
    que le compilateur ne reconait pas
    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
    38
    39
    40
    41
     
    #include<stdio.h>
    #include<stdlib.h>
    #include<ctype.h>
     
    int combienDeE(char *mot){
      int cpt,i;
      cpt=0;
      i=0;
      while (mot[i]!='\0'){
        if ((mot[i]=='e') ||( mot[i]=='E'))  cpt++;
        i++;
      }
      return cpt;
    }
     
    int combienDe(char *mot,char x){
      int cpt,i;
      cpt=0;
      i=0;
      while (mot[i]!='\0'){
        if ((mot[i]==tolower(x)) || (mot[i]==topper(x)))  cpt++;
        i++;
      }
      return cpt;
    }
     
    int main(){ 
      int c;
      char mot[30];
      char x;
      printf("donnez un mot: ");
      scanf("%s",mot);
      while ((c=getchar())!='\n'&& c!=EOF)
      printf("le nombre de e est de:%d\n",combienDeE(mot));
      printf("donnez un caractére:");
     
      scanf("%c",&x);
      printf("le nombre de %c est de: %d\n",x,combienDe(mot,x));
      return 0;
    }

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    toupper

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Par défaut
    ok merci je l'est mal écrit dans mon cour !

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/05/2011, 17h58
  2. Pointeurs et chaînes de caractères
    Par yo_haha dans le forum Débuter
    Réponses: 30
    Dernier message: 28/11/2008, 21h37
  3. Chaînes de caractères et pointeurs
    Par Opérateur dans le forum C
    Réponses: 12
    Dernier message: 12/12/2006, 06h24
  4. Pointeur et chaîne de caractères
    Par gijode dans le forum C
    Réponses: 4
    Dernier message: 22/11/2006, 09h26
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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