begin process at 2012 05 29 04:32:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

fichiers en C


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

fichiers en C

dimanche 26 juillet 2009 à 00:24:48 | fichiers en C

boualiasma

Salut,

1) Dans mon travail, j'utilise des fichiers.

je crée un fichier "essai.txt" pour le remplir

fp = fopen("essai.txt","w");

// je fais des traitements
......fprintf(fp,"hhhhhhhhhhh");

//je ferme le fichier
fclose(fp);

//je veux lire ce fichier
rewind(fp);
fp = fopen("essai.txt","r");

//lire de ce fichier
while(fgets(s,100,fp));
...
fclose(fp);

Comme vous remarquez j'ouvre plusieurs fois le même fichier et je les ferme plus que fois.

Comment je vais résoudre ce problème d'ouverture et fermeture plus que
fois ? Quel mode à choisir d'ouverture pour créer un fichier puis lire de ce fichier ?

2) Je voudrais positionner sur la ligne numéro k au lieu de lire ligne par ligne jusqu'à ligne numéro k. Alors , comment je positionne directement sur le k ème ligne du
fichier ?

3) Est ce que on peut faire l'union, l'intersection et la différence
entre les lignes de deux fichiers qui ont le même format au niveau contenu?

Merci.

lundi 27 juillet 2009 à 09:04:18 | Re : fichiers en C

TychoBrahe

Salut,

1) "rw" avec un fseek pour revenir au début après avoir écrit devrais fonctionner. Après, normalement si tu as écrit dans le fichier tu n'as pas besoin de le relire pour retrouver tes données, ce qui serait mieux vu que la lecture/écriture dans des fichiers prend beaucoup de temps.
2) Si tu as compté le nombre de caractères écrits, un fseek est suffisant.
3) Oui, mais il te faut le coder.

lundi 27 juillet 2009 à 10:05:26 | Re : fichiers en C

boualiasma

Salut,

1) "w+" çà marche pour l'écriture et lecture ?

2)
j'ai un fichier contient deux champs: un objet (un entier de taille
10) et une valeur (une chaine de caractère de taille 20).
je remplie mon fichier suivant le format suivant:
fprintf (fp, "%10d%20s\n",objet, valeur);

Comment utiliser fseek() pour positionner sur la troisième ligne par exemple ?

3)
J'ai deux fichiers texte "fich1.txt" et "fich2.txt".
Les deux fichiers ont le même type au niveau contenu puisque chaque ligne est formé par une chaine caractère. Sachant que le contenu de "fich2.txt" est toujours inclus dans "fich1.txt"

Par exemple:
fich1.txt

"Bonjour"
"Bonsoir"
"Salut"
"Bye"
"Bienvenue"

fich2.txt
"salut"
"bye"


Je voudrais sauvegarder dans un autre fichier "diff.txt" qui contient les chaines qui existent dans "fic1h.txt" et non dans "fich2.txt".

donc, le résultat est dans "diff.txt" :
"Bonjour"
"Bonsoir"
"Bienvenue"

Mais, moi j'obtiens par mon suivant:
"diff.txt":
"Bonjour"


Code C/C++ :
....

void main()
{
....
...
fp1=fopen("fich1.txt","r");
fp2=fopen("fich2.txt","r");
fp3=fopen("diff.txt","w");

while (fgets(ch,100,fp1))
{
sscanf(ch,"%s",att1);

while(fgets(s,100,fp2))
{
sscanf(s,"%s",att2);
if(memcmp(att2,att1,strlen(att1))!= 0)
fprintf(fpNS,"%s\n",att1);

}
}

fclose(fp1,fp2,fp3);
}


- Avez-vous une idée ou autre solution mieux?
- le but de ce programme est de faire la différence alors quelle modification à faire pour aboutir l'union et l'intersection entre les deux fichiers ?
C'est çà dire:
"union.txt"
"Bonjour"
"Bonsoir"
"Salut"
"Bye"
"Bienvenue"

"intersection.txt"
"salut"
"bye"



Autre questions:

- chaque ligne du fichier contient une chaine de caractère de même taille. je voudrais obtenir dans un autre fichier ou dans le même fichier le même contenu tout en séparant las caractère du la chaine par un espace.
par exemple "test.txt":

aaaaa
ahkhi
kjhgu
oijjm
kklkl


ce fichier devient:
a a a a a
a h k h i
k j h g u
o i j j m
k k l k l

Il y a une fonction définie en C ?

S'il vous plaît, pouvez vous m'aider ?

Merci.

lundi 27 juillet 2009 à 10:15:29 | Re : fichiers en C

TychoBrahe

Salut,

1) Oui en effet.
2) fprintf() retourne le nombre de caractères écrits.
3) Il existe un programme nommé diff qui fait tout celà, tu peux t'en inspirer.

"Il y a une fonction définie en C ?"
Non.

"S'il vous plaît, pouvez vous m'aider ?"
malloc donc une chaîne 2 fois plus grande que la première (sans oublier de la place pour le \0) et remplis la correctement, puis écrit la dans le fichier. Ainsi tu évite de faire des tonnes d'appels système.

lundi 27 juillet 2009 à 20:32:26 | Re : fichiers en C

boualiasma

Salut,

- comment vous allez utiliser fseek() pour positionner sur le troisième ligne par exemple ?

- pouvez vous déposer le code du programme "diff"qui fait la différence entre deux fichiers ?

Merci.

mardi 28 juillet 2009 à 00:05:29 | Re : fichiers en C

TychoBrahe

Salut,

- man fseek
- google code search



Cette discussion est classée dans : fichier, ligne, lire, fichiers, fp


Répondre à ce message

Sujets en rapport avec ce message

Lire toutes les chaines d'un fichier [ par JMGR ] Salut,J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se Lire dans un fichier [ par SfyLer ] C'est bon j'ai fini mon programme ! enfin presque ! :')J'aimerais lire dans un fichier, donc je l'ouvre et j'utilise ceci:char szBuffer[5000];while(!( Lire un fichier Texte Ligne par ligne [ par Ricpperso ] Bonjour,bon je fai un pti proget je voudrai savoir comment on fais pour lire un fichier Texte ligne par ligne, avec si possible le Cfile.merci d'avanc Tableau multidimensionel et fichiers [ par AngeloVivaldi ] slt à tous.Voila, je voudrai mettre dans un tableau multidimensionel chaque ligne d'un fichier, puis modifier une ligne du tableau pour le réécrire da Lecture d'un fichier via HTTP [ par koze ] Bonjour, mon application a besoin d'aller lire un fichier sur un serveur distant. J'utilise les API suivantes : InternetOpen InternetConnect HttpOp Lire une ligne d'un fichier texte [ par CassusGreg ] Salut à tous,Est-ce-qu'il existe une fonction pour lire une ligne de texte (terminé par 0x0D 0x0A) dans un fichier?Je suis sous VC++ 6merci Lire dans un fichier ligne par ligne [ par curator68 ] Voilà, j'ai un fichier sur mon disque, et j'aimerai lire le contenu ligne par ligne dans mon programme. J'utilise Visual C++ de Visual Studio 6.0 sp5. Lire dans un fichier [ par Psyc0s ] J'ai un fichier dans lequel je stock des log donc il n'a jamais le meme nombre de ligne. J'aurais besoin de mettre chacque ligne dans une variable(di lire un fichier txt ligne par ligne [ par lapinrose67 ] Bonsoir,Je developpe un logiciel en C sous Linux, voila mon problème:Je dois lire un fichier texte ligne par ligne et placer chacune d'entre ellesdans lire fichier ligne par ligne [ par mat74 ] salut a ts je voudrai savoir comment je pourrai lire un fichier lignes par lignes . par exemple une fonction qui me permerttrai de recuperer la ligne


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,265 sec (4)

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