Aide pour la fonction scanf

Fermé
Onelord0000 Messages postés 1 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 17 avril 2016 - 17 avril 2016 à 12:39
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 avril 2016 à 14:12
Bonjour,

Nouveau Codeur en C , je viens ici pour demander de l'aide à propos d'une la fonction scanf.

Prenons le code suivant :

int main ()
{
int age;
printf("Quel est votre age ?");
scanf("%d",&age);
printf("Votre age est : %d ", age);

return 0;
}


Si l'utilisateur tape 20, alors il aura ecrit : Votre age est 20.
Jusque la tout est nickel. Mais prenons maintenant un caractere:

int main ()
{
char* nom;
printf("Quel est votre age ?");
scanf("%s",&nom);
printf("vous etes %s", nom);

return 0;
}

Je tape Arthur, il y aura ecrit "vous etes Arthur".

Ce que je voudrais faire c'est oter le faait de devoir appuyer sur "entrer" une fois le nom écrit correctement.

J'ai pensé à une piste mais je ne sais si elle est bonne ou pas :
-limiter le nombre de caractères lus par scanf et dès que ce nombre est atteint, sortir du scanf.


Salutations,
Merci d'avance

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
17 avril 2016 à 14:12
Bonjour,

int main ()
Le bon prototype est : int main(void)

printf("Votre age est : %d ", age);
N'oublie pas de mettre un '\n' avant le return 0; final pour forcer l'affichage.

char* nom;
Tu as oublié l'allocation.
Il faut mettre : nom=malloc(taille); avec taille la taille de ta chaîne de caractères.
Et ne pas oublier en fin de programme : free(nom), nom=NULL; pour libérer la zone allouée.

Ou alors, tu peux utiliser un tableau : char nom[TAILLE] avec TAILLE la taille de ta chaîne de caractères.

scanf("%s",&nom);
Il ne faut pas mettre le & puisque nom est déjà un pointeur.

Cdlt,
0