• [^] # Re: Code bon :)

    Posté par . En réponse au message Mettre un fichier dans une matrice. Évalué à 2.

    Pas mal ton code. Quelques remarques (encore :-)) :
    - Tu peux écrire la plupart des caractères de manière "lisible", pas besoin de mettre directement leur code ASCII : pour espace par exemple, met if (caractereActuel == ' ')
    - Pour l'histoire du fgetc() et de l'int : dans le man de fgetc, tu vois que son type de retour est 'int'. Quand tu lis un peu plus loin, il est dit que cette fonction renvoie soit "un unsigned char transformé en int", soit "EOF". C'est parce qu'un caractère peut prendre la valeur 0 à 255 (ou -128 à 127 pour un non signé, mais c'est pareil), et que là tu n'as pas la "place" de caser une valeur pour EOF. Donc, fgetc() renvoit un int, qui vaudra soit -1 (pour EOF, mais t'es pas censé le savoir ; oublie le, mais en pratique ça dépanne des fois) soit de 0 à 255 (pour un caractère normal). Dans ton code, tu cast directement vers un char, donc tu ne "verras" pas la différence entre le caractère 0xff (ou 255)(ou -1) et EOF. Bon, tu vas me dire, au final, tu t'en fous, tu ne gère pas ce caractère. Mais pour une prochaine fois où tu liras des flux "binaires", fais-y attention. Dans ton code, il suffirait à priori de changer la déclaration de caractereActuel en int.
    - Enfin, dans ta gestion de fin de fichier, je bouclerais simplement sur un while (caractereActuel != EOF) et je fermerait le fichier après. Bon, ça c'est vraiment pour le style, genre j'ai envie de raccourcir le code ; ton code reste tout à fait fonctionnel (juste que l'alternative à ton test sur EOF qui reteste sur != de EOF, ça fait un peu "moche").