Warning en c

Pablo -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir, j’ai écrit un programme mais j’ai un warning que je ne comprend pas « ignoring return value of fscanf, declared with attribute warn unused result » quelqu’un pourrait il l’expliquer. Merci d’avance

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    comment utilises-tu fscanf? que fais-tu avec la valeur retournée?
    0
    1. Pablo
       
      Je l’utiliser pour stocker une valeur d’un fichier dans un tableau. La valeur retourner normalement devrait être stocker dans un char
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Pablo
         
        tout va bien alors, le compilateur se trompe probablement.
        0
  2. yt-thisisinfamous Messages postés 5 Statut Membre
     
    Normalement en traduisant tu a la réponse .Enfin j'espère que ça pourra t'aider

    --
    0
  3. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut Pablo,

    Quand yg_be te demande "que fais-tu avec la valeur retournée?" et que tu réponds "Je l’utiliser pour stocker une valeur d’un fichier dans un tableau. La valeur retourner normalement devrait être stocker dans un char", tu ne réponds pas à la question posée par yg_be si tu parles des données récupérées par la lecture, au lieu de parler de la valeur retournée par la fonction comme yg_be t'invite à le faire (
    fscanf
    retourne un
    int
    ).

    https://en.cppreference.com/w/c/io/fscanf

    Il est probable que ton code ignore cette valeur de retour, et que ton compilateur soit gcc, lequel indique dans sa documentation :

    https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-warn_005funused_005fresult-function-attribute

    The warn_unused_result attribute causes a warning to be emitted if a caller of the function with this attribute does not use its return value. This is useful for functions where not checking the result is either a security problem or always a bug, such as realloc.

    Voilà un exemple de code qui ne devrait pas produire ce warning.

    #include <stdio.h>
    
    int main(void) {
        FILE * fichier;
        char c;
    
        fichier = fopen("myfile.txt","r");
        if (fichier == NULL) {
            printf("Erreur: ouverture du fichier impossible\n");
            return 1;
        }
        /* le format passé à fscanf contient un seul spécificateur %c, 
         * donc si la lecture a réussi, fscanf doit retourner 1 */
        if (fscanf(fichier, "%c", &c) != 1) {
            printf("Erreur: impossible de lire un char\n");
            return 1;
        }
        /* jusqu'ici tout va bien, on peut alors exploiter le
         * char récupéré comme on veut, le mettre dans un tableau,
         * etc. */
    
        fclose(fichier);
        
        return 0;
    } 


    Dal
    0