concaténer des fichiers

concaténer des fichiers - C - Programmation

Marsh Posté le 05-04-2006 à 11:30:44    

Bonjour,
Je voudrais concaténer des fichiers commençant par le même préfixe contenu dans un même répertoire. Pour exemple, soit le répertoire noté REP qui contient les fichiers ASCII suivants:
fichier_LO_P_20040510_005719.SPR (ou "20040510_005719" représente la date 2004/05/10 00:57:19)
fichier_LO_P_20040510_005727.SPR
fichier_LO_P_20040510_010340.SPR
fichier_LO_L_20040510_005719.SPR
fichier_LO_L_20040510_005727.SPR
Sur cet exemple, je voudrais concaténer (par date croissante) les fichiers commençant par "fichier_LO_P_" dans un fichier unique. (idem pour les fichiers commençant par "fichier_LO_L_" ).
 
Il existe bien en C la fonction cat pour concaténer des fichiers ou des chaines, mais seulement deux fichiers par deux. J'ai pensé à faire une boucle; mais peut-être auriez-vous une meilleure idée à me suggérer avant que je me lance dans une quantité de lignes de code!
Merci d'avance
Sandra
 
Remarque: il est possible que le répertoire contient lors d'une prochaine exécution des fichiers commençant par "fichier_SUM_P_" au lieu du "LO" de l'exemple précédent. Autrement dit, il faut que ma concaténation puisse fonctionner pour des extentions du type "fichier_XX_P_" ou "fichier_XXX_P_" .

Reply

Marsh Posté le 05-04-2006 à 11:30:44   

Reply

Marsh Posté le 05-04-2006 à 11:47:26    

Bonjour :hello:
 

Citation :

Il existe bien en C la fonction cat pour concaténer des fichiers ou des chaines, mais seulement deux fichiers par deux.


En C, il existe strcat() qui concatène une chaîne de caractères au bout d'une autre.
 
cat est plutôt une commande du shell. A mon avis, le langage C n'est pas très indiqué pour ce que tu veux faire, et tu devrais plutôt t'orienter vers un script shell (ou batch ; c'est quoi ton système ?)
sous linux, l'opération que tu décris peut normalement se faire en un simple ligne de commande :

cat fichier_LO_P_*.SPR > fichier_concatene.SPR


Est-ce que ça répond à ta question ?


---------------
TriScale innov
Reply

Marsh Posté le 05-04-2006 à 11:57:33    

Oui. C'est bien ce qu'il me semblait, qu'on ne pouvait pas faire ça en C.
Je vais chercher une autre solution
Merci!

Reply

Marsh Posté le 05-04-2006 à 12:07:54    

sandra771 a écrit :

Oui. C'est bien ce qu'il me semblait, qu'on ne pouvait pas faire ça en C.


 
Si.
 
Il faut parcourir le répertoire à la recherche des fichiers à concaténer, ouvrir chaque fichier, et en écrire le contenu en sortie (un nom de fichier précisé en paramètre ou sur le flux de sortie standard).
 
C'est ce que fait "cat", hein. Cet utilitaire n'est pas sorti de la cuisse de Jupiter, il a été écrit... en C.
 
Maintenant, le faire en C est une perte de temps dans la mesure où il y a des outils qui effectuent très bien cette opération basique : "cat" sous unixoïdes, "type" sous DOS/Windows.


Message édité par Elmoricq le 05-04-2006 à 12:08:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed