Warning en c

Fermé
Pablo - 19 déc. 2018 à 21:07
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 20 déc. 2018 à 09:55
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 23421 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025 Ambassadeur 1 557
19 déc. 2018 à 21:11
comment utilises-tu fscanf? que fais-tu avec la valeur retournée?
0
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 23421 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025 1 557 > Pablo
19 déc. 2018 à 21:36
tout va bien alors, le compilateur se trompe probablement.
0
yt-thisisinfamous Messages postés 5 Date d'inscription mercredi 19 décembre 2018 Statut Membre Dernière intervention 19 décembre 2018
19 déc. 2018 à 21:55
Normalement en traduisant tu a la réponse .Enfin j'espère que ça pourra t'aider

--
0
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 1 097
Modifié le 20 déc. 2018 à 10:07
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