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

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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]
    1. Contributeur
      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é.
    2. Contributeur
      @[Dal]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.