Warning: format specifies type 'int *' but the argument has

Résolu/Fermé
brc - Modifié le 15 mars 2022 à 12:08
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 1 avril 2022 à 16:07
Bonjour,

Je débute dans le codage, j'essaye de faire exécuter cette fonction mais je n'y arrive pas.

#include <stdio.h>

int main(int argc, char *argv[3]) {
    int age = 0;
    printf("entrez votre age :");
    scanf("%d", age);

    if (age > 18) {
        printf(" Vous êtes majeur !\n");
    } else if (age <= 17) {
        printf("Vous êtes mineur !\n");
    }
    return 0;
}


Pouvez-vous m'aider s'il vous plaît ?
A voir également:

2 réponses

yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 Ambassadeur 1 557
14 mars 2022 à 20:38
bonjour,
as-tu lu la documentation de scanf(), ou examiné d'autres exemples?
n'hésite pas à partager le message d'erreur complet.
merci, quand tu partages du code, d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
mamiemando Messages postés 33435 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 décembre 2024 7 809
Modifié le 1 avril 2022 à 16:19
Bonjour,

Il y a plusieurs choses qui ne vont pas :
  • Le prototype de main s'écrit soit
    int main(){ ... }
    soit
    int main(int argc, char **argv) { ... }
    ;
  • Le
    scanf
    est incorrect : il ne peut pas sauver la valeur lue dans
    age
    car tu passes la variable
    age
    au lieu de passer son adresse
    &age
    ;
  • Le test fait dans le
    else
    n'est pas faux, mais inutile car il est toujours vrai. Il engendre donc une vérification certes peu coûteuse, mais inutile.
  • Essaye d'être vigilant au niveau de l'indentation.
  • Essaye d'être vigilant au niveau des espaces (derrière le ":" par exemple), aux majuscules, et aux accents.


Une fois ces corrections apportées, ton programme devient :

#include <stdio.h>

int main(){
    int age = 0;
    printf("Entrez votre âge : ");
    scanf("%d", &age);

    if (age >= 18) {
        printf("Vous êtes majeur !\n");
    } else {
        printf("Vous êtes mineur !\n");
    }
    return 0;
}

Bonne chance

EDIT : corrigé pour tenir compte des remarques de [Dal]
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
Modifié le 1 avril 2022 à 14:55
L'algorithme est faux également, car une personne qui a 18 ans est majeure, et non pas mineure.

Le test devrait donc être
if (age >= 18)
ou
if (age > 17)
et non pas
if (age > 18)
, pour obtenir tous les âges correspondant à une personne majeure. Ensuite, comme mamiemando le propose, un simple
else
suffit pour capturer tous les autres cas, qui correspondent nécessairement à des âges de minorité.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094 > [Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024
1 avril 2022 à 16:07
Et, en C, si on veut écrire une forme de main qui n'accepte pas de paramètres, il faut écrire
int main(void)
en toute rigueur.
0