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

Résolu
brc -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
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 ?

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105 > [Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention  
 
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