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 :

Lire un nombre inconnu de données avec scanf


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Lire un nombre inconnu de données avec scanf
    Bonjour,

    Je voudrais savoir comment lire un nombre inconnu de données, sru un nombre inconnu de lignes en utilisant la fonction scanf.
    Par exemple si je veux calculer une somme et que j'écris en ligne de commande :
    ,
    le résultat affiché est 30.

    Ou par exemple si je veux écrire une phrase, je voudrais que chaque mot de la phrase soit enregistré dans un tableau.

    Merci d'avance !

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    De prime abord, interroge-toi sur le fait que scanf est conçu pour lire un flux formatté (donc prévisible) donc n'est pas forcément le bon outil pour analyser ce type d'entrée.

    Cela dit, si tu fixes un nombre maximum d'entiers par ligne - mettons cinq - alors tu peux tenter de lire cinq entiers et t'adapter au résultat, puisque scanf te retourne le nombre d'éléments analysés avec succès : int n = scanf("%d %d %d %d %d", &in[0], &in[1], &in[2], &in[3], &in[4]).

  3. #3
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,

    le code suivant devrait plus ou moins faire l'affaire (il manque quelques vérifications d'usage) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int main(void)
    {
      int sum=0;
      int n;
      while (scanf(" %d", &n)==1)
        sum+=n;
      printf("sum=%d\n", sum);
      return 0;
    }
    Une fois lancé tu peux entrer des nombres et finir la saisie avec un CTRL+D ou quelquechose qui n'est pas un nombre. J;utilise le fait que scanf renvoie le nombre de variables qu'il a réussi à remplir. S'il renvoie autre chose que 1 (a priori 0 ou EOF) alors on s'arrête →

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ ./nbr 
    5 5
    3 2 1
    1 
    5 8
    sum=30

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

Discussions similaires

  1. Lire un nombre inconnu de chaine de caractere
    Par mahrous dans le forum C
    Réponses: 6
    Dernier message: 09/11/2015, 19h09
  2. Lire un nombre inconnu de choses
    Par Nooby300 dans le forum Général Python
    Réponses: 4
    Dernier message: 08/08/2015, 18h28
  3. Réponses: 14
    Dernier message: 22/07/2015, 04h18
  4. Réponses: 0
    Dernier message: 22/08/2008, 10h58
  5. Faire remonter un nombre inconnu de données
    Par Zenigata dans le forum C++
    Réponses: 2
    Dernier message: 10/12/2007, 14h20

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