begin process at 2012 05 29 10:34:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

ecriture fichier ligne


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales