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

Résolu
brc -  
[Dal] Messages postés 6122 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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      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
      1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108 > [Dal] Messages postés 6122 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