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 :

[debutant]la fonction scanf


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [Resolu][debutant]la fonction scanf
    Je souhaiterai enregistrer une chaine de caractere avec des espaces, comment dois je m'y prendre?.
    merci

  2. #2
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Que veux tu dire par "enregistrer"?
    Ton post est sur scanf, je suppose que tu veux récupérer une chaine saisie au clavier:

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    oui tout a fait, mais avec les espaces !

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    OK c'est bon, c'est la fonction qui me convient
    merci

  5. #5
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Vu que la question parlait de la fonction scanf(), je pense qu'il voulait ça comme réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%[^\n]", ta_chaine) ;
    Comme ca , le retour a la ligne (\n) ne sera pas interpréter comme validation de la valeur mais bien comme un char ...
    Mais il et déconseillé d'utiliser scanf, et il faut lui preferer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(chaine, taille, stdin);
    et non pas gets pour des raisons deja évoquées.

    Nas'

  6. #6
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Et pour prendre en compte le changement de ligne ?

    Par exemple je veux recuperer les chiffres de la premiere ligne, de la deuxieme tout en mettant a jour un ptit drapeau pour dire je suis a la ligne 2 ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int i, flag;
    while(!feof(*file)){
    fscanf(*file,"%d",&i);
    ....}
    Comment completer ca ?

    freif'
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

  7. #7
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    J'ai pas compris exactement le problème.
    Tu veux lire dans un fichier les données qui sont sous la forme :
    01 // les deux premiers chiffres
    42 // deux autres chiffres sur une seconde ligne

    C'est bien ca?
    scanf() lit une seule ligne (je pense) , pas plus.
    Si c'est dans un fichier, tu peux tout simplement utiliser la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(char* s, TAILLE , FILE* stream);
    ... qui lit ligne par ligne le fichier.
    C'est plutot :
    ...

    Nas'

  8. #8
    Membre actif
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Points : 235
    Points
    235
    Par défaut
    Le feof prend le pointeur vers le fichier.
    Je fais ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    do{
        fscanf(fp,"%d",&c);
        fin_ligne = getc(fp);
        if(flag == 0){
          first_c = c;
          flag = 1;
        } else {
          ....fonction blabla ...
          if(fin_ligne == '\n')
    	flag = 0;
        }
      } while(!feof(fp));
    Ca m'embete juste de devoir faire un getc "inutile"...

    freif'
    MacOS 10.5 / Ubuntu / C / Python / R
    Pensez au tag résolu

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

Discussions similaires

  1. [debutant] appel fonction
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/04/2006, 15h40
  2. Réponses: 7
    Dernier message: 27/03/2006, 16h18
  3. [debutant] prototype fonction
    Par richard dans le forum C
    Réponses: 2
    Dernier message: 20/02/2006, 23h40
  4. [debutant] pb avec scanf et printf
    Par Andrey dans le forum C
    Réponses: 12
    Dernier message: 17/11/2005, 17h15
  5. [ debutant PLPGSQL ] fonction plpgsql
    Par diableblanc dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 01/06/2005, 12h54

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