[C/C++] Problème avec getc(), value 26, EOF???

Problème avec getc(), value 26, EOF??? [C/C++] - Programmation

Marsh Posté le 12-06-2001 à 14:52:25    

Salut
J'écris des bytes (char en C) dans un fichier avec putc. J'écris des valeurs allant de 0 à 100. Lorsque je relis le fichier avec la fonction getc(), lorsqu'il lis la valeur 26, il l'interprète apparemment comme un EOF. Alors, je dois faire comment pour que mon programme ne plante pas à chaque fois que la valeur 26 est écrite.  
! J'écris en format binaire(getc, putc), pas en ASCI(fscanf, fprintf)!
 
Merci de me prouver que ce forum est encore utile.
@+


---------------

Reply

Marsh Posté le 12-06-2001 à 14:52:25   

Reply

Marsh Posté le 12-06-2001 à 14:57:45    

Et si tu lis/ecris par bloc avec des fread()/fwrite(), ca ne fonctionne pas ?

Reply

Marsh Posté le 12-06-2001 à 15:04:41    

Oui, sauf qu'il me semble que fread/fwrite ne fonctionne pas avec un buffer. Autrement dit, si tu écris un million de char, tu auras un million d'accès disque. Alors que getc/putc bufferise, donc attend que tu aies envoyer plusieurs putc pour les écrire réellement.
Mon problème est que je dois écrire plusieurs centaine milliers de byte dans un fichier, par série de 1000/2000. Et si j'ai 500'000 accès disque, je suis un peu mal.
Merci


---------------

Reply

Marsh Posté le 12-06-2001 à 15:15:20    

euh... non... fread/fwrite fonctionnent avec un buffer. Et d'autre part je pense que tu peux en assigner un avec une fonction style
 
setbuf(buffer, taille_du_buffer);

Reply

Marsh Posté le 12-06-2001 à 15:39:48    

Ok. Merci pour l'info. Je viens de trouver la solution. Il s'agit apparemment d'une macro qui convertit la valeur 26 en EOF(-1) lorsque l'on est en mode texte. Il faut donc ouvrir le fichier avec l'argument b (binaire) ("wb" ou "rb", par exemple) et le problème est résolu.
Merci pour ton aide. Tu bosses dans quoi? Etudiant?


---------------

Reply

Marsh Posté le 12-06-2001 à 15:43:57    

Etudiant en stage... je fais du rendu volumique sur des fluides.
http://forum.hardware.fr/sqlforum/ [...] inc&cache=

Reply

Marsh Posté le 12-06-2001 à 15:49:03    

Sympa ton travail. Tu as souvent des réponses correctes sur ce forum? Parce que perso, en hardware, pour ainsi dire rien. Mais sous programmation, cela va déja mieux. Mais cela dépend des sujets. Parce qu'il n'y a rien de pire qu'un type qui veut répondre absolument alors qu'il n'y connait rien.
En espérant pouvoir te donner un coup de main prochainement.
@+


---------------

Reply

Marsh Posté le 12-06-2001 à 15:52:35    

Programmation, c'est le forum bon esprit de HFR. J'ai un peu navigue sur tous les autres, mais c'est pas genial, Hardware ca devient pourri avec le iench, O/c c'est n'importe quoi, HA/V c'etait bien jusqu'a recemment, donc je traine ici de plus en plus souvent, et je dois dire que la population de programmation est assez restreinte et attachante :), ca fait un peu "petite famille"... ;)

Reply

Marsh Posté le 12-06-2001 à 15:59:24    

Oui, totalement d'accord. Les gars qui jouent à Q3 et bavent devant des bi-processeurs ou qui conseillent n'importe quoi.... pour moi, bof bof. Peut-être qu'il est plus facile de remettre qqn à sa place dans "Programmation". Plus facile de tester les connaissances d'un gars. Et moins d'avis à la con, du style "C++ c'est de la merde. J'ai écrit un code et cela m'a sorti 2 erreurs et 3 warnings". Alors qu'avec Intel, W2K, Geforce... c'est bcp plus facile les "Ca marche pas chez moi donc c'est de la merde".
@+


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed