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 :

demande de texte char refusee


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut demande de texte char refusee
    bonjour a tous jai un petit prob avec mon code c surtout avec la demande de texte scanf:bug: bon je vais vous passer le code source

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h> 
     
    int main(int argc, char *argv[])
    {
      char prenom[120];
      printf("Combien de fois dois-tu copier? ");
      long nombreDeCopie = 0;
      scanf("%ld", &nombreDeCopie);
      long compteur = 0;
     
     
     
        printf("Que dois-tu copier? ")
     
     
     
        scanf("%s", &prenom);
     
     
     
     
    while (compteur < nombreDeCopie)
    {
        compteur++;
        printf("%ld.%c\n", compteur, prenom);
     
    }
      system("PAUSE");	
      return 0;
    }

  2. #2
    Membre actif
    Avatar de odsen.s
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 269
    Points : 243
    Points
    243
    Par défaut
    Salut,

    A première vue, il manque un ";" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("Que dois-tu copier? ")
    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%ld.%c\n", compteur, prenom);
    prenom est un tableau de char, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%ld.%s\n", compteur, prenom);

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par morteleux
    bonjour a tous jai un petit prob avec mon code c surtout avec la demande de texte scanf bon je vais vous passer le code source
    Il manquait un ';',
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        printf("Que dois-tu copier? ");
    mais il reste des erreurs :
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:15: warning: char format, different type arg (arg 2)
    main.c:19: warning: int format, pointer arg (arg 3)
    main.c: At top level:
    main.c:4: warning: unused parameter 'argc'
    main.c:4: warning: unused parameter 'argv'
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 4 warnings
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    /* -ed- parametres non utilises... */
    int main (void)
    {
       char prenom[120];
       printf ("Combien de fois dois-tu copier? ");
       long nombreDeCopie = 0;
       scanf ("%ld", &nombreDeCopie);
       long compteur = 0;
     
       /* -ed- manquait un ';' */
       printf ("Que dois-tu copier? ");
     
    /* -ed- un & en trop. securite : penser a limiter la taille saisie */
       scanf ("%119s", prenom);
       while (compteur < nombreDeCopie)
       {
          compteur++;
          /* -ed- "%c" : caractere "%s" : chaine */
          printf ("%ld.%s\n", compteur, prenom);
       }
     
    /* -ed- n'est utile qu'avec [wx]dev-C++ */
       system ("PAUSE");
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Combien de fois dois-tu copier? 3
    Que dois-tu copier? hello
    1.hello
    2.hello
    3.hello
    Appuyez sur une touche pour continuer...
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut bon ca marche a moitié
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h> 
     
    int main(int argc, char *argv[])
    {
      char prenom[120];
      printf("Combien de fois dois-tu copier? ");
      long nombreDeCopie = 0;
      scanf("%ld", &nombreDeCopie);
      long compteur = 0;
     
     
     
        printf("Que dois-tu copier? ");
     
     
     
        scanf("%s", &prenom);
     
     
     
     
    while (compteur < nombreDeCopie)
    {
        compteur++;
        printf("%ld.%s\n", compteur, prenom);
     
    }
      system("PAUSE");	
      return 0;
    }
    sa donne sa

    Combien de fois dois-tu copier? 20
    Que dois-tu copier? je m'appelle nicolas
    1.je
    2.je
    3.je
    4.je
    5.je
    6.je
    7.je
    8.je
    9.je
    10.je
    11.je
    12.je
    13.je
    14.je
    15.je
    16.je
    17.je
    18.je
    19.je
    20.je
    Appuyez sur une touche pour continuer...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:15: warning: char format, different type arg (arg 2)
    main.c:19: warning: int format, pointer arg (arg 3)
    main.c: At top level:
    main.c:4: warning: unused parameter 'argc'
    main.c:4: warning: unused parameter 'argv'
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 4 warnings
    sa veut dire?

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par morteleux
    sa veut dire?
    Tu ne sais pas lire l'anglais ?
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut non
    je ne sais pas lire l'anglais je fais du néérlandais.

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Voici une version qui est nettement plus jolie

    - Il ne faut pas utiliser scanf
    - Il faut utiliser les bons paramètres lors de l'utilisation de printf
    - Mélanger code et définitions est souvent moche...

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main(void)
    {
        char prenom[120], buf[32], *endptr;
        long nombreDeCopie = 0;
        long compteur = 0;
     
        printf("Combien de fois dois-tu copier? ");
     
        /* fy -> Pas de scanf, fgets + strtol */
        if(fgets(buf,sizeof(buf), stdin) == NULL) {
            fprintf(stderr, "Erreur avec fgets\n");
            return EXIT_FAILURE;
        }
     
        nombreDeCopie = strtol(buf, &endptr, 0);
     
        /* Gestion d'erreur */
        if( *endptr != '\n')  {
            fprintf(stderr, "Erreur avec le nombre fourni\n");
            return EXIT_FAILURE;
        }
     
        printf("Que dois-tu copier? ");
     
        if(fgets(prenom,sizeof(prenom), stdin) == NULL) {
            fprintf(stderr, "Erreur avec fgets\n");
            return EXIT_FAILURE;
        }
     
        /* On cherche le '\n' pour l'enlever */
        endptr = strchr(prenom, '\n');
     
        if(endptr == NULL) {
            fprintf(stderr, "Erreur avec la saisie du prenom\n");
            return EXIT_FAILURE;
        }
        else {
            /* On enleve le '\n' */
            *endptr = '\0';
        }
     
        /* Utilise un for, on connait le nombre d'iterations */
        for(compteur=1; compteur<=nombreDeCopie; compteur++)
        {
            printf("%ld.%s\n", compteur, prenom);
        }
     
        return EXIT_SUCCESS;
    }
    Jc

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par morteleux
    Combien de fois dois-tu copier? 20
    Que dois-tu copier? je m'appelle nicolas
    1.je
    2.je
    3.je
    <...>
    Appuyez sur une touche pour continuer...


    C'est normal. scanf() avec "%s" ne prend qu'un mot. Pour une ligne complète[1], utiliser fgets().

    -----------------------------
    [1] et de nombreuses autres raisons liées à la sécurité...
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par morteleux
    je ne sais pas lire l'anglais je fais du néérlandais.
    Pour faire de l'informatique, il faut savoir lire l'anglais.

    main.c: In function `main':
    main.c:15: warning: char format, different type arg (arg 2)
    main.c:19: warning: int format, pointer arg (arg 3)
    main.c: At top level:
    main.c:4: warning: unused parameter 'argc'
    main.c:4: warning: unused parameter 'argv'

    main.c: Dans la fonction `main' :
    main.c:15: attention : format de type char, argument 3 d'un type différent
    main.c:19: attention : format de type int, argument 3 de type pointeur
    main.c: Au niveau supérieur :
    main.c:4: attention : le paramètre 'argc' n'est pas utilisé
    main.c:4: attention : le paramètre 'argv' n'est pas utilisé
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. string demandé avec un char
    Par piero53 dans le forum Débuter avec Java
    Réponses: 27
    Dernier message: 17/04/2010, 02h43
  2. [VB][WORD] MSWORD.OLB Remplacement.Text 255 char ?
    Par unacsed dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 21/09/2006, 08h55
  3. [T-SQL]conversion CHAR en TEXT
    Par delphe70 dans le forum Sybase
    Réponses: 1
    Dernier message: 16/02/2006, 18h14
  4. [Demande d'assistance] Convertisseur Texte > Image
    Par Tub-95 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 21/09/2005, 18h50
  5. Conversion Texte en Hexadécimal (char*)
    Par kilowat dans le forum C++
    Réponses: 6
    Dernier message: 11/06/2005, 13h40

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