Accueil > Forum > > > > ecriture fichier ligne
ecriture fichier ligne
vendredi 1 avril 2005 à 02:23:43 |
ecriture fichier ligne

PepeDeLuxe
|
Hello
Voila j'ai un problème que je n'arrive pas à résoudre pour un projet, si quelqu'un pouvait m'aider ça serait sympa..
Je voudrais écrire le dans un fichier mais à une ligne précise et non
pas à un offset càd écrire à la ligne 6 par exemple sans effacer les
lignes d'avant et d'après..., je ne sais pas combien de caractère j'ai
par ligne (caractères par lignes < 256), je sais qu'il existe fseek
ou SetFilePointer mais ces fonctions positionne le pointeur à un offset
et non pas au début d'une ligne ...Existe t'il une fonction pout placer
le pointeur au début d'une ligne sans avoir à calculer le nombre de
caractère pour positionner le pointeur???
J'ai fait un truc en lisant caractère par caractère mais naturellement ca ne marche pas bien autant dire que c'est aléatoire :
file=fopen("monfichier.txt","r+");
while (j<ligne)
{
while (getc(file)!='\n')
index++;
index++;
j++;
} fseek(file,index,SEEK_SET);
fprintf(file,phrase);
fclose(file);
Merci pour votre aide
|
|
vendredi 1 avril 2005 à 06:48:00 |
Re : ecriture fichier ligne

AlexMAN
|
Je ne pense pas qu'il existe ce genre de fonctions. Moi personnellement, je te conseillerais de lire le fichier, de parcourir le buffer, et de compter le nombre de '\r' (ou '\n'), et de placer le 'pointeur de fichier' a l'endroit ou tu t'es arreté de parcourir ton buffer (pour connaitre le nombre d'octets a sauter, tu fais : Pointeur de fin - pointeur de depart = nbr_octets).
Je sais pas si quelqu'un a mieux, mais moi personnellement, je ferais comme ca :/
+2(p - n)
|
|
vendredi 1 avril 2005 à 11:18:32 |
Re : ecriture fichier ligne

minet03
|
Mais en lisant le fichier caractère par caractère et en vérifiant '\n' ou '\r' le pointeur se deplace de le flux du fichier. Donc il suffit de s'arrêter après le 5 '\n' ou '\r'. Le pointeur sera directement là où tu veux. int i=0; char c; file = fopen("tonfichier.txt","r+"); for(i=0;i<5;i++) { c = getc(file); if( c != '\n' ) i--; } // le pointeur est positionné, le prochain caractère sera (normalement) le premier caractère de la ligne 6. Le CyberMonde nous offre une meilleur qualité de vie CyberMan.inc The WebSite
|
|
vendredi 1 avril 2005 à 13:27:57 |
Re : ecriture fichier ligne

PepeDeLuxe
|
Hello
Alors pour ceux que ça intéresseraient je n'ai pas trouvé de solution
simple pour écrire à un endroit précis dans un fichier...bon d'accord
je ne suis pas un expert de la prog.. mais bon...
minet03 ta solut ne fonctionne pas car je pense qu'il faut faire une distinction entre la tête de lecture et d'écriture....
Je que je vais faire c'est mémoriser le buffer à intégrer et copier le
fichier vers un fichier bis,avec CopyFile par exemple, puis
recopier dans l'ancien fichier le nouveau fichier bis jusqu'à la ligne
à modifier y inserer le buffer puis terminer de recopier le fichier bis
dans le fichier...
Un peu chiant mais je pense que c'est la seule solution ...
Voila et merci pour votre patiente...
|
|
vendredi 1 avril 2005 à 14:46:46 |
Re : ecriture fichier ligne

anarchysniper
|
Pour comprendre la méthode à utiliser il faut voir les choses du point
de vue de l'ordinateur. Pour lui, un saut de ligne n'est qu'un
caractère comme un autre et ce n'est qu'à l'affichage qu'il est utilisé
au travers de son code ASCII pour adapter la mise en page au centre
nerveux lent et imparfait qui nous fait office d'unité de traitement
communément appelée cerveau.
La fonction existe surement quelquepart mais elle ne peut être qu'une
variante de ce que minet03 a proposé. Personnellement je formulerais
plutôt la chose avec un while testant le caractère \n imbriqué dans un
for testant le nombre d'occurences du caractère déjà rencontrées, cela
évitera de trop toucher à i ! Le tout avec une petite structure de
contrôle vérifiant qu'on est pas à la fin du fichier histoire de ne pas
se cogner à l'infini à un rébarbatif message d'erreur du style
end_of_file.
Par contre, minet, je ne sais pas ce que tu as voulu faire car tu
testes à l'infini le même caractère puisque tu ne décales pas la
position de la lecture dans le fichier, si encore le getc marche ...
|
|
vendredi 1 avril 2005 à 18:20:06 |
Re : ecriture fichier ligne

minet03
|
En fait si tu fais le test avec getc() (exemple ce que j'ai fait avec
un printf), on s'apercoit que getc() avance le pointeur dans le flux.
Donc mon exemple marche (je l'ai même tester avec Turbo C++) Le CyberMonde nous offre une meilleur qualité de vie CyberMan.inc The WebSite
|
|
Cette discussion est classée dans : fichier, ligne, file, caractère, index
Répondre à ce message
Sujets en rapport avec ce message
Pb de gestion de fichier avec fstream [ par Bub325 ]
Salut,J'ai deux problème distinct avec fstream, Le premier est que lorsque j'arrive à la fin d'un fichier, je ne peut plus revenir plus haut dans ce d
saut de ligne dans un fichier texte [ par milhandril ]
Je souhaite enregistrer des valeurs saisies dans une boite de dialogue dans un fichier texte, chaque champ est délimté par le caractère ";" et je souh
Lire dans un fichier texte [ par hasen ]
Bonjour,Je suis en plein projet et je dois lire dans un fichier, ce que je fais mais caractère par caractère et c'est pas toujours facil à gérer. Est-
Lecture d'un fichier et affichage de balises [ par SpiritAnghell ]
Bonjour;Le programme suivant est censé extraire les balises d'un fichier xml et les afficher une par une:#include #include #include #include #include
[C++] Ouvrir un fichier en donnant le chemin + parcours par caractère [ par Tamahoma ]
Bonjour,je voudrais savoir comment ouvrir un fichier en donnant son cheminj'ai testé comme ceci :string chemin;cout << "saisir le chemin du fichier a
Récuperer une chaine 3 caractère dans une chaine de caractère ? [ par Atomos83 ]
Bonjour, alors voila je vous expose mon problème :Je doit scanner un fichier, chaque ligne du fichier est de a meme forme, seul les 3 dernieres caract
modification date [ par drcmomo ]
Bonjour!!Je fais un traitement sur les fichiers.txtmes fichiers contiennent des centaines de lignes.Mon problème j'aimerais bien remplacer dans toutes
Comment recuperer tous le contenu d'un fichier (avec saut de ligne et en c++) ? [ par ndubien ]
Bonjour,Je cherche à savoir comment il faut faire pour prendre tous le contenu d'un fichier (texte) possedant des retours à la ligne!J'ai l'hbitude de
Sauter la ligne dans un fichier [ par xmustapha ]
bonjour tout le monde comment faire pour sauter la ligne dans un fichier dans la function WriteFile() (je suis sur C++ Builder 2007)j'ai essayer çain
Majuscule ? [ par norton ]
Bonjour, Je cherche a savoir si la chaine de caractère contenue dans un fichier text est en majuscule mais je ne sait pas comment faire. Pour le momen
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|