Transformer une colonne en une ligne

Résolu
DLM26 Messages postés 6 Statut Membre -  
DLM26 Messages postés 6 Statut Membre -
Bonjour,

je cherche une procedure pour transformer un fichier txt d'une colonne composee de n lignes (chaque ligne ayant x caracteres),
en une ligne de n ensembles de x carateres, chacun etant separe par une virgule

exemple:

AAQM002
AAQP007
AAQP009
ACQH002
ACQH003
ACQH004

en*:
AAQM002,AAQP007,AAQP009,ACQH002,ACQH003,ACQH004

complication supplémentaire: la valeur de n est "grande" (au moins 50 000), et la solution doit etre compatible avec cet ordre de grandeur
*je dois soumettre cette ligne a un requeteur non modulable d'un logiciel

merci pour votre aide

DLM26
Configuration: Windows XP
Firefox 2.0.0.11
A voir également:

3 réponses

nagashima Messages postés 4500 Statut Membre 254
 
si tu utilise un tableau, tu prend la bibliotheque string.h, tu utilise strlen pour voir la longueur de ta chaine et tu remplace le dernier caractere , soit '\0' par ',' avec strncpy ^^.

Le plus simple, tu la convertis en AnsiString, mais bon....
0
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

tu peux installer devC++ pour compiler le code (voir en gras)

mon test est fait sous linux sur un fichier de 5 198 918 lignes (50 000 c'est rien ;-))
à la fin tu verras le temps d'exécution

lami20j@debserv:~/trash$ wc -l ccm.txt
5198918 ccm.txt
lami20j@debserv:~/trash$ cat ccm.c
#include <stdio.h>

int main ()
{
  FILE *fic, *res;
  int c;

  if ((fic = fopen ("ccm.txt", "r")) == NULL)
    return -1;
  if ((res = fopen ("resultat.txt", "w")) == NULL)
    return -1;

  while ((c = getc (fic)) != EOF){
      if (c == '\n')
        c = ',';
      fprintf (res, "%c", c);
  }
  fclose (fic);
  fclose (res);
  return 0;
}
lami20j@debserv:~/trash$ gcc ccm.c
lami20j@debserv:~/trash$ time ./a.out

real    0m3.321s
user    0m2.828s
sys     0m0.476s
0
DLM26 Messages postés 6 Statut Membre
 
merci,

j'ai pu y arriver
DLM26
0