Spliter un fichier....

damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006 - 11 juin 2004 à 22:41
damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006 - 12 juin 2004 à 23:55
salut le monde des programmeurs
j'ai deja posté un message sur le forum de VB sur le splitage de fichier...

"je cherche comment décomposer des lignes, que je récupére dans un fichier *.dat, en plusieurs cellules d'un tableau.

je m'explique, j'ai un fichier .dat qui contient plusieur milliers de lignes. chaque lignes est composée de texte et de séparateur ( soit "," soit ";").
ex: bonjour;damdam;04;;;marseille;...
je cherche un code qui me permette de récupérer le texte entre chaque séparateur.

merci d'avance à tous ceux qui répondront à ce message... "

un mail m'a été envoyé avec l'adresse d'une source mais je ne peux découper le fichier que par taille...

donc si quelqu'un peut m'aider....
merci d'avance

ps je suis débutant en c donc c'est pour ça que je reformule ma demande...
merci

5 réponses

damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006
11 juin 2004 à 22:43
merci beaucoup de votre aide, j'ai réussi à faire ce que je voulais...
maintenant je cherche à le faire en C ou C++, parce que le VB c'est un peu lent... ou alors je ne connais pas les astuces pour optimiser mon code...

merci encore de votre aide

bonne continuation à tous
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 juin 2004 à 23:03
Original: bonjour;damdam;04;;;marseille;
bon ok mais exactement tu veux obtenir quoi partant de cet exemple ?

bonjourdamdam04marseille
Serait ce cela ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 juin 2004 à 12:07
Faut utiliser la fonction 'strtok' !

tient j'tai fait un pt'it bout de code qui te permet d'afficher les lignes que tu souhaite a l'ecran :

=> Buffer represente le fichier en memoire !

un premier strtok permet de faire la recherche de la première occurance, par contre pour trouver les autres tu n'est plus obliger de specifier la chaine à parcourir, pour çà que j'ai fait une boucle for avec un strtok qui contient un NULL .

je sais pa si je m'exprime clairement mais voila le code !

*************************

// Split de fichier par ELGUEVEL

#include <windows.h>
#include <stdio.h>

/* Retourne la taille du fichier en octet */ (methode maizon)
int longFichier( FILE *ffile )
{
int len;

fseek(ffile, 0, SEEK_END);
len = ftell( ffile );
fseek(ffile, 0, SEEK_SET);

return len;
}

/* Entry Point */
void main ( int argc, char *argv[])
{

// DECLARATIONS

FILE *fichier;

char *trouve;
char *buffer, *memBuffer;

int fTaille = 0;

printf("\n\tSplitteur - Par ElGuevel");

// CONTROLES

if ( argc < 2)
{
printf("\n\n\t Syntaxe : %s <fichier a traiter>\n", argv[0]);
exit(0);
}

if ( (fichier =fopen( argv[1], "r" ) ) == NULL )
{
printf("\n\n\t Erreur : Le fichier '%s' n'a pas pu etre ouvert !\n\n", argv[1] );
exit(0);
}

// MISE EN MEMOIRE DU FICHIER

fTaille = longFichier( fichier );

buffer = (char *) LocalAlloc( LPTR, fTaille + 1 );

memBuffer = buffer; // conserve l'adresse du pointeur de depart pour destruction fiable !

fread( buffer, sizeof(char), fTaille, fichier );

// PARSAGE

trouve = strtok( buffer, ",;" ); // premiere recherche

do
{
printf("\n%s", trouve );

trouve = strtok( NULL, ",;" );
} while( trouve != NULL );

LocalFree ( memBuffer );

printf("\n\n");

}

*****************************

Aller bonne continuation.

désolé si mon code peu paraitre un peu porc pour certain mais j'ai debuter le 'C' y'a 2 mois !
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 juin 2004 à 12:10
Heuuu pour VB .. c vrai que ce langague est lent mais je le pratique aussi, la fonction est plus simple, tu lit ton fichier, et tu le place dans une varaible ou autre comme precedemment genre :

Open fichier for input as #1
do while not EOF(1)
input #1, variable
Loop
Close #1

et ensuit etu a juste a declarer un tableau et a utiliser la fonction Split (n'existe qu'avec VB6 je croit).

Dim Tableau() as string

Tableau = Split ( variable, seprateur) <= heu je croit que c çà j'ai pas la fonction sous les yeux .

Allé @+

Damien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006
12 juin 2004 à 23:55
ben en fait mon fichier fait plus de 1.5 Mo alors pour le stocker pas de souci, mais lorsque je travaille dessus et que je le réécrit dans un fichier, la , ça prends du temps, et j'ai besoin d'en gagner...

merci encore pour ton aide damien, c'est exactement se que j'ai fait dans mon code...

merci encore à tout le monde!

et vive les programmeurs!!!!

damdam04
0
Rejoignez-nous