sous unix, O_TEXT (fonction open()) [C++] - Programmation
Marsh Posté le 29-06-2002 à 14:39:56
C'est plus du C que du C++ ça
Je ne peux pas trop t'aider, j'utilise surtout fopen et fprintf pour écrire du texte dans un fichier.
Marsh Posté le 29-06-2002 à 15:24:29
ITM a écrit a écrit : C'est plus du C que du C++ ça Je ne peux pas trop t'aider, j'utilise surtout fopen et fprintf pour écrire du texte dans un fichier. |
salut,
merci quand même
En fait le C++ c'est du C objet, c'est vrai qu'on est pas obligé de l'utiliser, donc en effet c'est du C
@++
Marsh Posté le 29-06-2002 à 15:27:05
Verdoux a écrit a écrit : Y a pas de O_TEXT sous linux contrairement à DOS/Win. |
merci verdoux
Donc ça fonctionne très bien sans de toute façon !
@++
Marsh Posté le 29-06-2002 à 15:31:54
Verdoux a écrit a écrit : Y a pas de O_TEXT sous linux contrairement à DOS/Win. |
Et pour les plus curieux, voici l'explication :
sous Windows les retour de ligne occupent deux caractère : 0x0D 0x0A.
En mode texte si on rencontre un de ces deux caractères on met d'office les deux.
Donc si on ouvre, met en mémoire, puis réécrit un fichier en mode texte, il risque de prendre quelques octets de plus.
En Unix c'est juste 0x0A (il me semble, ou alors c'est l'autre), donc pas de différence de traitement.
Disclaimer : je ne suis pas sûr à 100% de tout ça, mais c'est ce que j'ai constaté "sur le terrain".
Marsh Posté le 29-06-2002 à 15:34:46
antp a écrit a écrit : Et pour les plus curieux, voici l'explication : sous Windows les retour de ligne occupent deux caractère : 0x0D 0x0A. En mode texte si on rencontre un de ces deux caractères on met d'office les deux. Donc si on ouvre, met en mémoire, puis réécrit un fichier en mode texte, il risque de prendre quelques octets de plus. En Unix c'est juste 0x0A (il me semble, ou alors c'est l'autre), donc pas de différence de traitement. Disclaimer : je ne suis pas sûr à 100% de tout ça, mais c'est ce que j'ai constaté "sur le terrain". |
c'est bien ça...
Marsh Posté le 29-06-2002 à 14:01:34
/*Salut les développeurs,
voilà sous Linux je fais des petits tests, et voici une petite source :
Mais j'ai un problème. La paramètre 'O_TEXT' n'est pas dans le fichier fnctl.h, donc pour que ce prog compile (sous gcc), je retire le paramètre 'O_TEXT'.
Si je laisse le paramètre 'O_TEXT', j'ai
---
[root@localhost win_e]# gcc prog.cpp
prog.cpp: In function `int main (...)':
prog.cpp:17: `O_TEXT' undeclared (first use this function)
prog.cpp:17: (Each undeclared identifier is reported only once for each
function it appears in.)
---
Donc j'aimerais savoir où est déclaré le paramètre 'O_TEXT'... Même si c'est vrai qu'il fonctionne très bien ainsi...
Au fait je sais que ce prog est pourri mais c'est mon premier programme unix, je fais juste des essais...
Merci, et @++
juju
*/
---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com