2012-04-23 7 views
2

Je parcours l'entrée hexadécimale de stdin dans mon code, et j'ai remarqué que je ne peux pas contourner mon arrêt de code lorsqu'un octet 0xff est atteint. Je sais que cela se produit parce que la boucle est:Entrée hexadécimale pouvant contenir 0xff en C++

while((c=getchar()) != EOF) 

Cependant, je ne peux pas laisser cela parce que sinon getchar est appelée après la fin réelle de fichier et segfaults. Comment puis-je parcourir l'entrée complète correctement?

(désolé je sais qu'il devrait y avoir une réponse simple à cette tâche apparemment commune, mais j'essayé de chercher pendant un certain temps et n'a rien trouvé)

+0

alors que le corps de exécute si et seulement si la valeur que vous venez de lire est pas EOF. Je doute que l'erreur soit là. Plus de code s'il vous plaît. – ScarletAmaranth

Répondre

6

Vous avez déclaré c comme char, mais getchar() retourne un int. La boucle correcte pour construire C est la suivante: (! (C = getchar()) = EOF)

int c; 
while ((c = getchar()) != EOF) { 
    // use c here. 
} 
Questions connexes