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 :

Probleme avec les chaines de caracteres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 98
    Par défaut Probleme avec les chaines de caracteres
    Bonjour,

    j'ai un soucis en C, d'ailleurs je suis étonné que depuis le temps que je programme je n'ai pas eu ce probleme avant.

    Je dois ecrire une chaine contenant des espaces et la mémoriser dans une variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("Entrez le chemin ou se situe le fichier csv\n");
    	 printf("EX: T:\\STG\\J_Orset\\MATRICE\\Tableau Mélange Pignon Lanceur D67 2006_10_03.csv\n");
    	 scanf("%s", &FNEW);
    Le truc est que comme il y a des espaces ma variable prend la valeur T:\\STG\\J_Orset\\MATRICE\\Tableau c'est tout. Comment faire pour que je puisse prendre tout la ligne meme les espaces???


    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par orj30754
    Bonjour,

    j'ai un soucis en C, d'ailleurs je suis étonné que depuis le temps que je programme je n'ai pas eu ce probleme avant.

    Je dois ecrire une chaine contenant des espaces et la mémoriser dans une variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("Entrez le chemin ou se situe le fichier csv\n");
    	 printf("EX: T:\\STG\\J_Orset\\MATRICE\\Tableau Mélange Pignon Lanceur D67 2006_10_03.csv\n");
    	 scanf("%s", &FNEW);
    Le truc est que comme il y a des espaces ma variable prend la valeur T:\\STG\\J_Orset\\MATRICE\\Tableau c'est tout. Comment faire pour que je puisse prendre tout la ligne meme les espaces???


    Merci
    Bonjour,

    En évitant comme la peste la fonction scanf. Préféré la fonction fgets.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 98
    Par défaut
    La fonction FGETS n'est elle pas faite pour la lecture de fichier.....

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 98
    Par défaut
    Désolé j'ai trouvé, gets en faite

  5. #5
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Je ne vois pas pourquoi ta variable (qui est une chaine de caractère a priori) ne prendrait pas les espaces.
    A mon avis ton problème est ailleurs. A moins que ta variable contenant ta chaine ne soit pas suffisement grande pour contenir toute ta chaine.

  6. #6
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par crocodilex
    Je ne vois pas pourquoi ta variable (qui est une chaine de caractère a priori) ne prendrait pas les espaces.
    A mon avis ton problème est ailleurs. A moins que ta variable contenant ta chaine ne soit pas suffisement grande pour contenir toute ta chaine.
    scanf considère l'espace comme un séparateur.

    Tiré du man scanf:
    s Matches a sequence of bytes that are not white space characters. The corresponding argument must be a pointer to the initial byte of an array of char, signed char, or unsigned char large enough to accept the sequence and a terminating null character code, which will be added automatically

  7. #7
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par orj30754
    Désolé j'ai trouvé, gets en faite
    Il ne faut pas utiliser la fonction gets. Elle est bugué.
    La solution c'est fgets.

  8. #8
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Citation Envoyé par orj30754
    Désolé j'ai trouvé, gets en faite
    A éviter aussi, aucun contrôle sur la taille du tampon. Ma préférence ira toujours vers fgets pour une saisie utilisateur.

  9. #9
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Non, la fonction fgets est prévue pour lire un flux. Que ce flux provienne d'un fichier ou de l'entrée standard (stdin) peu importe.

    Faite une recherche sur le forum pour savoir comment utiliser au mieux cette fonction sur une entrée utilisateur.

Discussions similaires

  1. Probleme avec les chaines de caracteres
    Par jesuscrie dans le forum C
    Réponses: 5
    Dernier message: 30/06/2006, 22h56
  2. probleme avec les chaines de caracteres
    Par snake77350 dans le forum C
    Réponses: 11
    Dernier message: 25/04/2006, 18h29
  3. [VBA-E]Jouer avec les chaines de caractere contenu ds cellu
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2006, 13h15
  4. probleme sur les chaines de caractere
    Par foufi5 dans le forum C
    Réponses: 8
    Dernier message: 22/12/2005, 15h30
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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