Problème avec if dans un while.
Bonjour,
nouveau sur la liste, j'ai lu les préambules, les faq etc... mais je rencontre pour la première fois un problème étrange que je n'arrive pas à comprendre c'est sûrement évident mais je calle ;-) J'écris le programme suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <stdio.h>
#include <ctype.h>
int main()
{
int c;
c = getchar();
while (c != EOF)
{
/* printf("TEST\n"); */
if (isalnum(c))
{
putchar(c);
c = getchar();
}
}
return 0;
} |
Quand je rentre les données : fgh
le programme boucle sans fin.
en fait je me suis rendu compte que isalnum(c) renvoie 8 avec les lettres et les chiffres et 0 pour le reste donc j'ai remplacé isalnum(c) par 8 (mais n'importe quel chiffre != 0 fait l'affaire) mon programme fait ce que j'attend:
réécrire fgh.
j'ai essayé avec c > 96 à la place de isalnum(c) et le programme boucle sans fin aussi.
Ben ... je dois manquer quelque chose, mais je ne comprends pas quoi ?
Ma machine: laptop acer wlmi5102 AMD Turion 64x2
Mon OS: linux Debian testing
uname -r
2.6.18-amd64
Merci d'avance pour un conseil ou un lien où je puisse être éclairé.
rutabagas.
:tagcode::merci: