begin process at 2010 03 12 15:55:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

traitement d'un fichier


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

traitement d'un fichier

samedi 4 juillet 2009 à 20:36:45 | traitement d'un fichier

boualiasma

Salut,
J'ai un fichier texte bien formé contient deux champs: objet et attribut.
tous les objets sont des entiers et tous les attributs sont de chaines de caractères de même taille.
chaque ligne contient un objet et son attribut par exemple:

essai.txt:

1      11100

2      10101

3       01001

4       10001


Je voudrais supprimer les 0 de même position dans chaque chaine de caractère.
Par exemple dans notre cas, nous allons supprimer les 0 dans la position 4 de chaque chaine car dans cette position nous avons toutes les chaines sont à 0.

j'ai trouvé une difficulté de résoudre ce problème, de plus imaginez si nous avons un fichier volumineux.

Mon idée:
je parcoure seulement la première ligne de fichier. Pour tout 0 de chaine de première ligne je teste si je trouve dans la même position où je trouve 0 de chaine de première ligne dans les chaines des autres lignes.
Cette solution este théorique. Imaginez si nous avons un fichier volumineux.De plus la perte de curseur et de position.


SVP, j'ai besoin de vos aides.
samedi 4 juillet 2009 à 20:40:08 | Re : traitement d'un fichier

boualiasma

par exemple nous allons supprimer la colonne en rouge car nous avons le 0 dans la même position.

essai.txt:


1      11100

2      10101

3      01001

4      10001
dimanche 5 juillet 2009 à 10:49:38 | Re : traitement d'un fichier

dan34

Problème d'algorithme !!! mais simple

Tu prend chaque nombre et tu fais un OU avec chacun d'eux
Tu parcourt les bits du nombre obtenu pour repérer la position n du 0
Tu reprend chaque nombre que tu soustrait à 2 puissance n






dimanche 5 juillet 2009 à 10:56:27 | Re : traitement d'un fichier

dan34

Heu il manque la fin

Tu fais une soustraction de 2 puissance n pour tous les bits jusqu'à la fin du nombre pour ton exemple n va de 1 à 4
dimanche 5 juillet 2009 à 17:28:24 | Re : traitement d'un fichier

boualiasma

Salut,
Voici le programme C:
Code : C
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>

intmain()
{
FILE*fichier;
chartmp;
inti;
inta=1;/*ecriture*/
intb=1;/*lecture*/
fichier=fopen("essai.txt","r+");
if(!fichier)
{
printf("erreur d'ouverture du fichier\n");
exit(-1);
}
else
{

// tmp = fgetc(fichier);
fscanf(fichier,"%c",&tmp);
while(tmp!=EOF){
/*On fait une boucle pour parcourir tous les retours chariot inutiles*/
while(tmp=='\n'){
fseek(fichier,b,SEEK_SET);/*On se positionne sur b*/
tmp=fgetc(fichier);/*On enregistre le caractère*/
fseek(fichier,a,SEEK_SET);/*On revient sur a*/
fputc(tmp,fichier);/*On écrit le caractère*/
b++;/*On fait avancer la tête de lecture*/
a++;/*On fait avancer la tête d'écriture*/
}
if(tmp==EOF){
break;
}
for(i=0;i<4;i++){/*On se place sur l'élément à effacer*/
fseek(fichier,b,SEEK_SET);
tmp=fgetc(fichier);
fseek(fichier,a,SEEK_SET);
fputc(tmp,fichier);
a++;
b++;
}
b++;/*On efface l'élément en faisant un décalage de tête de lecture*/
while(tmp!='\n'){/*On continue*/
fseek(fichier,b,SEEK_SET);
tmp=fgetc(fichier);
if(tmp==EOF)
break;
fseek(fichier,a,SEEK_SET);
fputc(tmp,fichier);
a++;
b++;
}
}

//truncate(argv[1], a); /*On supprime les caractères qui restent*/
fclose(fichier);
return0;
}
}


le fichier texte avant l'exécution est:
1 11100
2 10101
3 01001
4 10001

A titre d'information, il n' y pas des lignes vides.

Après l'exécution on aura le fichier suivant:

1 1110

2 1011

3 0101

4 10010001


Je remarque que nous obtenons le résultat mais le fichier résultat contient des lignes vides(saut de lignes)par rapport le premier contenu de fichier.
et il contient la partie rouge qui est une partie superflue.

Comment on évite ces saut de lignes(lignes vides)?
et comment on supprime la partie rouge superflue ?


Cette discussion est classée dans : fichier, ligne, chaine, chaines, position


Répondre à ce message

Sujets en rapport avec ce message

Exploitation de fichier en C ?!?!?! [ par GazGaz ] lu allalors voila le truc c'est que je voudrais aller chercher des infos dans un fichier qui est structuré de la meme maniere lignes apres lignes. Je Recherche chaine de caractères dans un fichier [ par Arkadius ] Bon j'ai été bcp plus explicite et précis dans mon poste précédant mais l'envoie de celui-ci à foiré, alors en bref.J'écris des chaines de caractères 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 tableau de chaines de char [ par JaguiJaguar ] Salut, je suis etudiant.je dois réaliser un prog en c qui lit une chaine de char, la stocke dans la premiere ligne d'un tableau char *tab[n]où n est l comment extraire un fichier csv ligne par ligne avec visualc++? [ par ngatcha ] bonjour,comment puis je extraire un fichier csv ligne par ligne avec visualc++? J'ai un eproposition de solution mais il y ' a des erreurs dans le co lecture chaines de caractères dans un fichier [ par sandy27 ] je veux lire dans un fichier des chaines de caractères qui vont contenir d'autres fichiers dont je devrai lire les données par la suite. Exemple: nom_ 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 lire une chaine de caractere dans un fichier et la camparer aux autres chaines dans le meme fichier [ par leiloula ] j'ai pa pu programmé un truc qui me permet de lire une chaine de caractere dans un fichier et la camparer aux autres chaines dans le meme fichier et v Position d'un caractère. [ par fireuo ] J'ai fait un programme en VB qui servait a essayer toute les combinaison d'un checksum. Je vous évite les détails. Mais dans la code VB j'ai la ligne Ordre dans les déclarations de variables ??! [ par vincemail ] Bonjour à tous, je suis en train de faire un programme en C++ avec devC++, et je viens de trouver un bug que je n'arrive pas à comprendre, je veux sto


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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 : 2,402 sec (3)

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