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 :

ferror renvoie une erreur de segmentation


Sujet :

C

  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut ferror renvoie une erreur de segmentation
    Bonjour à vous,

    J'ai ce code assez simple :

    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
     
    	printf("\n\nRenseignez le chemin d'acces au fichier Machine :\n");
    	scanf("%256s",adresseMachine);
     
    	printf("\nRenseignez le chemin d'acces au fichier Donnees :\n");
    	scanf("%256s",adresseDonnees);
     
    	fichierDonnees = fopen(adresseDonnees, "r");
    	fichierMachine = fopen(adresseMachine, "r");
     
    	if(fichierDonnees != NULL)
    	{
    		//traitement pour fichier ouvert
    	}
    	else
    	{
    		if (ferror(fichierDonnees))
    		{
    			perror("donnees.txt");
    		}
    		return 1;
    	}
    Dans le cas où je donne des noms de fichiers existant, aucune erreur.

    Si je mets le nom de fichier inexistant
    Renseignez le chemin d'acces au fichier Machine : plop
    Renseignez le chemin d'acces au fichier Donnees : pwet

    En ce cas, j'aurais le message Erreur de segmentation

    Selon le man,

    Ces fonctions ne devraient pas échouer, et ne positionnent donc pas la variable errno. (Toutefois, si fileno détecte que son argument n'est pas un flux valide, il doit renvoyer -1 et remplir errno avec EBADF.)
    Quel est le problème? >.<

    Merci à vous,
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Je crois que le comportement de ferror avec un argument NULL est indéfini
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    humpf...

    J'avais lu ce code sur un tutoriel mais je n'arrive plus à remettre la main dessus...

    Merci Diogène.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  4. #4
    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 Deallyra Voir le message
    J'avais lu ce code sur un tutoriel
    Soit faux, soit mal mémorisé.

    Mais peu importe. Ce n'est pas comme ça qu'on écrit du code correct, mais en sachant de quoi on parle. Pour ça, on se documente et on voit que ferror() n'a de sens que si une fin de lecture s'est produite...

    Ton code n'a donc aucun sens.

    http://emmanuel-delahaye.developpez....s.htm#fichiers

    Le C, ça ne se devine pas, ça s'apprend.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Quelque peu acerbe vos propos non? Ou alors la fatigue que j'accumule qui me donne cette impression.

    Soit faux, soit mal mémorisé.
    Faux.
    J'ai fait du copier coller. Je sais c'est mal. Du copier coller, c'est pour un exemple précis... Mais là, c'était un exemple comprenant le file *toto = fopen avec un test si non NULL et le else...
    Il n'y avait pas plus simple... Et pas plus faux également.

    Mais peu importe. Ce n'est pas comme ça qu'on écrit du code correct, mais en sachant de quoi on parle. Pour ça, on se documente et on voit que ferror() n'a de sens que si une fin de lecture s'est produite...
    je suis allée voir les documentations... D'où un lien parmi tout ce que j'ai vu sur le net dans mon premier post.

    Ton code n'a donc aucun sens.
    Effectivement
    Je m'en étais rendue compte après des recherches plus poussées

    http://emmanuel-delahaye.developpez....s.htm#fichiers

    Le C, ça ne se devine pas, ça s'apprend.
    Et je me sers souvent de vos pages quand j'ai besoin de trouver quelque chose...

    Cependant, même si ça ne se devine pas, l'apprentissage passe par des erreurs, par des essais.
    La théorie pure et dure n'est rien sans application et sans erreur pour nous montrer comment progresser.

    Juste que je trouve que vous avez été un peu dur sur votre dernier message
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  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 Deallyra Voir le message
    Cependant, même si ça ne se devine pas, l'apprentissage passe par des erreurs, par des essais.
    La théorie pure et dure n'est rien sans application et sans erreur pour nous montrer comment progresser.

    Juste que je trouve que vous avez été un peu dur sur votre dernier message
    Certaines attitudes proches du bricolage m'énervent... surtout quand ça fini sur le forum et venant de quelqu'un qui prétend ne pas être débutante en programmation (algo, java toussa...).

    Que tu fasses des essais chez toi, à la rigueur. Mais poser une question sans s'être documenté avant, ce n'est pas sérieux et ça fait perdre du temps à tout le monde.
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je me suis documentée avant je venais de vous le dire.

    Mais je n'ai vu nulle part que ferror avec NULL en paramètre avait un comportement indéfini. Pire, j'avais vu son "fonctionnement" dans un code de tutoriel.

    Je suis désolée de vous faire perdre votre temps...

    Je ne cherche pas à faire du bricolage. Ce que je veux c'est apprendre.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    7.19.10.3 The ferror function
    Synopsis
    1 #include <stdio.h>
    int ferror(FILE *stream);
    Description
    2 The ferror function tests the error indicator for the stream pointed to by stream.
    Returns
    3 The ferror function returns nonzero if and only if the error indicator is set for
    stream.
    4. Conformance
    1 In this International Standard, ‘‘shall’’ is to be interpreted as a requirement on an
    implementation or on a program; conversely, ‘‘shall not’’ is to be interpreted as a
    prohibition.
    2 If a ‘‘shall’’ or ‘‘shall not’’ requirement that appears outside of a constraint is violated, the
    behavior is undefined. Undefined behavior is otherwise indicated in this International
    Standard by the words ‘‘undefined behavior’’ or by the omission of any explicit definition
    of behavior
    . There is no difference in emphasis among these three; they all describe
    ‘‘behavior that is undefined’’.
    3.4.3
    1 undefined behavior
    behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements

    2 NOTE Possible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or
    execution (with the issuance of a diagnostic message).

    3 EXAMPLE An example of undefined behavior is the behavior on integer overflow.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

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

Discussions similaires

  1. Debuger une erreur de segmentation
    Par Z-fly dans le forum Réseau
    Réponses: 8
    Dernier message: 14/08/2008, 02h56
  2. fsockopen en mode SSL renvoie une erreur
    Par joboy84 dans le forum Langage
    Réponses: 1
    Dernier message: 11/06/2008, 18h43
  3. [PHPMailer] N'envoie pas d'e-mail ou renvoie une erreur
    Par stanko77 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/07/2007, 20h31
  4. [JVCL] install.bat de JCL renvoie une erreur
    Par Gaadek dans le forum Delphi
    Réponses: 3
    Dernier message: 08/06/2007, 15h56
  5. Requete sql vers ORACLE qui renvoi une erreur
    Par lilou77 dans le forum Oracle
    Réponses: 7
    Dernier message: 29/01/2007, 09h52

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