Langage C

Résolu
wanish10 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

je viens d'établir un programme en langage C, dans lequel j'ai déclaré une variable tableau de type chaine de caractère, pour pouvoir stocker un nom & prénom, avec un espace entre les deux, mais lorsque je viens d'afficher le résulta, le programme ne fonctionne pas comme il faut, merci de votre aide

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Merci de poster votre programme, ça sera plus simple pour aider.
    1
    1. wanish10
       
      merci
      mon programme est :
      #include<stdio.h>
      #include<stdlib.h>
      main()
      {
      char identite[20];
      printf("entrer votre nom et prenom\n");
      scanf("%s",&identite);
      printf("tu es %s\n",identite);
      system("pause");
      return 0;
      }

      si je tape par exemple ( jaune killy ) le programme m'affiche seulement jaune
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020 > wanish10
       
      Le problème n'est pas à l'affichage mais à la lecture, le scanf s'arrête à l'espace.
      0
    3. wanish10 > wanish10
       
      SVP est ce qu'il y a une solution????
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020 > wanish10
       
      Comme ceci par exemple :
      scanf("%[^\n]",identite);
      À voir aussi : La saisie de texte sécurisé
      0
    5. wanish10
       
      merci infiniment ça marche bien merci mille fois
      0
  2. wanish10
     
    en tous les cas merci mais hélas, j'ai le même problème, mais cette fois avec un tableau de deux dimensions, j'ai essayer avec tous les méthodes même avec la fonction fgets(*char,dim,fil).
    le programme est :

    //saisie des informations concernants les candidats
    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
    char prenom[5][10];
    char nom[5][10];
    float note[3][3],s;
    int i,j;
    printf("------------------* calcul des moyennes des candidats *-----------------\n\n");
    //remlissage des tableaux
    for(i=1;i<=2;i++)
    {
    printf("prenom : \n ",i);
    scanf("%19[^\n]",prenom[i]);
    printf("nom : \n ",i);
    scanf("%19[^\n]",nom[i]);
    for(j=1;j<=3;j++)
    {
    printf("donner la note de trimestre %d\n",j);
    scanf("%f",&note[i][j]);
    }
    }
    puts("\n\n");
    //affichage des informations
    for(i=1;i<=2;i++)
    {
    s=0;
    printf("------------------* fiche de : %s %s *-----------------\n\n",prenom[i],nom[i]);
    for(j=1;j<=3;j++)
    {
    printf("la note de trimestre %d est %0.2f\n",j,note[i][j]);
    s=note[i][j]+s;
    }
    printf("la moyenne est : %0.2f\n",s/3);
    puts("\n");
    }
    system("pause");
    return 0;
    }

    lorsque j'élimine la boucle destiné pour la saisie des notes, le programme marche bien, mais avec cette boucle je peux pas saisir une chaîne de caractère avec un espace.
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Si tu définis une taille 10 pour tes noms et prénoms (char prenom[5][10], char nom[5][10]), ce n'est plus %19[^\n] qu'il faut utiliser mais %9[^\n]

      Ensuite gros problème au niveau de ton scanf("%f",¬e[i][j]);
      Déjà, je ne vois pas ce que viens faire le ¬ et surtout j est compris entre 1 et 3 alors qu'il devrait très certainement être entre 0 et 2, même si on en sait rien puisque e n'existe pas !
      Remarque : tu as le même problème d'indice un peu plus loin, mais tout ceci ne concerne plus du tout ton problème de lecture avec espaces...
      0
  3. @ur3l'$
     
    Salut !!

    Ta méthode n'est pas correcte -> scanf("%[^\n]",identite);

    Voici un petit exemple si j'ai bien compris ton programme :

    int main() {

    char saisie[100]; // tableau qui contient nom + espace + prenom

    printf("Veuillez saisir votre nom et prenom du style 'nom prenom':\n");
    scanf("%99s", saisie); // 99 caracteres max seront pris

    printf("Resultat de la saisie -> %s\n", saisie);

    return 0;
    }
    -3
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      En quoi ne serait-elle pas correcte ?
      En plus wanish10 (qui a posé la question) a lui même mis que ça marchait !!!
      Ça correspondait donc bien à ce qu'il avait besoin, contrairement à ta solution pour laquelle le scanf s'arrête malgré tout à l'espace !!!
      0