Warning en c

Pablo -  
[Dal] Messages postés 6205 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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
comment utilises-tu fscanf? que fais-tu avec la valeur retournée?
0
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Pablo
 
tout va bien alors, le compilateur se trompe probablement.
0
yt-thisisinfamous Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Normalement en traduisant tu a la réponse .Enfin j'espère que ça pourra t'aider

--
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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