web-dev-qa-db-fra.com

Lecture de long int à l'aide de scanf

Pour lire un int en utilisant scanf, nous utilisons:

scanf("%d", &i);

Que faire si i est un long pas int ??

Remarque: lorsque vous utilisez %d avec long ça me donne un avertissement irritant ..

15
Betamoo

Utilisez simplement

long l;

scanf("%ld", &l);

ça me donne un avertissement irritant ..

Cet avertissement est tout à fait juste. Cela implore la corruption de la pile.

24
jpalecek

Pour l'amour de Dieu:

long n;
scanf( "%ld", & n );
6
anon
scanf("%ld", &i);

Vous pouvez aussi utiliser "%Ld" pour un long long (et selon votre compilateur, parfois aussi "%lld").

Jetez un œil à la section Conversions de la page de manuel de scanf pour en savoir plus. (Utilisez simplement Google si votre système n'a pas de pages de manuel).

3
Vineet

Chaque spécificateur de conversion s'attend à ce que son argument correspondant soit d'un type spécifique; si le type de l'argument ne correspond pas au type attendu, le comportement n'est pas défini. Si vous voulez lire un long avec scanf(), vous devez utiliser le %ld spécificateur de conversion:

long i;
scanf("%ld", &i);

Consultez en ligne projet de norme C (fichier .pdf), section 7.19.6.2, paragraphe 11 pour une liste complète des modificateurs de taille et des types attendus.

3
John Bode