Transformer une colonne en une ligne

Résolu/Fermé
DLM26 Messages postés 6 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 novembre 2010 - 23 déc. 2007 à 09:30
DLM26 Messages postés 6 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 novembre 2010 - 23 déc. 2007 à 21:24
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
A voir également:

3 réponses

Utilisateur anonyme
23 déc. 2007 à 10:21
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
23 déc. 2007 à 10:55
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 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 1 novembre 2010
23 déc. 2007 à 21:24
merci,

j'ai pu y arriver
DLM26
0