Warning en c

Pablo -  
[Dal] Messages postés 6373 Statut Contributeur -
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585 > Pablo
 
tout va bien alors, le compilateur se trompe probablement.
0
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
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
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