Transformer une colonne en une ligne [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
1 novembre 2010
-
Messages postés
6
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
1 novembre 2010
-
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

3 réponses

Messages postés
4270
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
209
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....
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 536
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
Messages postés
6
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
1 novembre 2010

merci,

j'ai pu y arriver
DLM26