PDA

View Full Version : [C] Smembrare un file .txt in file più piccoli


Red_Knight
27-07-2009, 17:45
Salve, ho un gigantesco file .txt (131 MByte), che contiene varie informazioni. Devo suddividerlo in circa 8500 file .txt più piccoli, che devono prendere il nome dei sottotitoli di questo file. Il file è inquinato... non mancano byte, ma ce ne sono alcuni in più, diciamo "rumore", che devo eliminare. Questo rumore ha una sua regolarità, contiene una stringa fissa, più alcuni byte di "impurità" a sinistra o a destra. Il mio problema è: una volta che identifico il sottotitolo giusto (a questo ci penso io) e lo salvo in una stringa, come faccio a creare un file .txt avente per nome quella stringa, e salvarci dentro il contenuto? Il secondo problema è: c'è qualche algoritmo particolare per identificare e confrontare un gran numero di stringhe (le "impurità") avanti e indietro per un file di 131 MByte senza metterci anni?

wizard1993
29-07-2009, 22:54
scusami per il ritardo; ma quello che ti server molto probabilemente è un suffix tree
http://en.wikipedia.org/wiki/Suffix_tree

Red_Knight
30-07-2009, 00:58
Grazie mille per la risposta! Studierò per bene il suffix tree. Rimane il problema (credo anche banale, ma sono inesperto) del come creare un file .txt avente per nome una stringa data.

wizard1993
30-07-2009, 10:05
fopen fwrite e tutta la parte di libreria che operano sui puntatori al tipo di data FILE sono per te
http://www.google.it/search?hl=it&q=file+c&sourceid=navclient-ff&rlz=1B3GGGL_itIT334IT334&ie=UTF-8

yorkeiser
30-07-2009, 10:08
Grazie mille per la risposta! Studierò per bene il suffix tree. Rimane il problema (credo anche banale, ma sono inesperto) del come creare un file .txt avente per nome una stringa data.

FILE* f;
char* stringa;
stringa = (char*)malloc(<dimensione massima nome del file>);
[...]
assegnazione del nome del file a stringa, banalmente con una strcpy
[...]
f=fopen(strcat(stringa,".txt"),"w");
fprintf(f,"...");
[...]
fclose(f);