Est-ce que le read lit les caractères '\0' ? [ C ] - C++ - Programmation
Marsh Posté le 14-04-2002 à 22:22:28
La fin de fichier c'est pas \0, c'est la fin de chaîne ça.
Et il ne stocke pas la marque de fin de fichier.
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 14-04-2002 à 22:49:52
antp a écrit a écrit : La fin de fichier c'est pas \0, c'est la fin de chaîne ça. Et il ne stocke pas la marque de fin de fichier. |
comment on lui dit d'arreter de lire, a la fin du fichier ?
on est obliger de faire ça avec la taille ?
Marsh Posté le 14-04-2002 à 22:50:37
et stocke t-il le caractere fin de chaine '\0' ?
(et c'est quoi au fait, le caractere fin de fichier ?)
Marsh Posté le 14-04-2002 à 22:57:12
djoh a écrit a écrit : comment on lui dit d'arreter de lire, a la fin du fichier ? on est obliger de faire ça avec la taille ? |
Avec EOF
Marsh Posté le 14-04-2002 à 23:01:22
Ou quand read renvoie une valeur plus petite que celle qu'on lui a demandé de lire.
Le \0 il s'en fout il le lit comme si c'était un autre caractère (on parle bien des fonctions open, read, write, close)
Marsh Posté le 14-04-2002 à 23:33:11
antp a écrit a écrit : Ou quand read renvoie une valeur plus petite que celle qu'on lui a demandé de lire. Le \0 il s'en fout il le lit comme si c'était un autre caractère (on parle bien des fonctions open, read, write, close) |
ok, impecable
merci
Marsh Posté le 14-04-2002 à 23:36:10
[SDF]Poire a écrit a écrit : Avec EOF |
non, EOF c'est pas pour read
c'est pour les fonctions de la lib standard genre getc.
read (ou _read sous windows) retourne zero
quand on lit a la fin du fichier.
il peut renvoyer moins que ce que l'on a demande sans arriver
pour autant a la fin du fichier suivant le type d'entree.
LEGREG
[jfdsdjhfuetppo]--Message édité par legreg--[/jfdsdjhfuetppo]
Marsh Posté le 15-04-2002 à 09:30:34
antp a écrit a écrit : La fin de fichier c'est pas \0, c'est la fin de chaîne ça. Et il ne stocke pas la marque de fin de fichier. |
heu EOF == \0 dans un fichier ..... loool
un fichir avec les char non imprimables ca donne ca :
coucou les\r\namis comment ca va?\r\n\tglop lgop\n\0
avec de read de 1
ca ca morche pour un fichier
while(*a)
read(fd,a,1);
Marsh Posté le 15-04-2002 à 09:34:41
koulip31 a écrit a écrit : while(*a) read(fd,a,1); |
PS : fait un gros buffer de lecture
et comme read te renvoie le nombre de char lut
si le nombre de char luts == taille du buffer tes pas a la fin
si le nombre de char luts < taille du buffer
ou si nombre de char luts == 0 le fichiedr a ete lut
donc copier tout les char du buffer precedant le \0 et basta
Marsh Posté le 15-04-2002 à 09:46:13
koulip31 a écrit a écrit : heu EOF == \0 dans un fichier ..... loool un fichir avec les char non imprimables ca donne ca : coucou les\r\namis comment ca va?\r\n\tglop lgop\n\0 avec de read de 1 ca ca morche pour un fichier while(*a) read(fd,a,1); |
T'as bu ou quoi ?
Tu fous un \0 en plein milieu d'un fichier ça ne provoque pas pour autant une coupure du fichier.
Tous les programmes (sauf ton exemple) lisent le fichier au-delà de ce \0.
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 14-04-2002 à 22:06:54
quand on lit un fichier avec read, il s'arrete avant le '\0' de fin de fichier, ou il le met dans le buffer, et s'arrete apres ?