PDA

View Full Version : [C++] Algoritmo di ricerca di una linea in un file


ReDriEct_y3K
23-01-2005, 17:14
Salve a tutti... sono al rpimo anno di ingegnieria informatica e mi serve una mano con un programma...
dovrei sviluppare una funzione che mi restituisca una stringa realtiva ad una riga di un file...
per esmpio

file stringhe.txt

Hello
World
lalala
tralalala
ding
dong

funzione

string getData(int line)
{
string newstring = "";
//algoritmo per leggere dal file stringhe.txt una determinata linea e settarla come newstring
...
return newstring;
}

chiamata della funzione
...
data = getData(4); // 4 è la linea numero quattro del file corrispondente alla stringa tralalala
//data ora è uguale a tralalala
...

spero di essere stato chiaro... ho cercato dapertutto ma non ho trovato una risosta al mio problema.
ringrazio chiunque vorrà risp.
:mc: :mc: :mc:

NA01
23-01-2005, 18:09
il tuo problema quale è?
se è nel cercare la riga la prima cosa che mi viene in mente è lanciare n volte una getline e restituire solo l'ultima. ti basta un ciclo e è fatta.
non è il massimo, ma suppongo funzioni

ciao!

ReDriEct_y3K
23-01-2005, 18:24
si scusami... non so come fare per farmi restiturie la riga partendo dal numero di riga... cioè come ho descritto prima... Dici un ciclo con getline? Ma poi come faccio a farmi stamparo o memorizzare in una variabile una determinata riga?... Stopensando di usare un array... tu cosa puoi dirmi?

NA01
23-01-2005, 20:11
non puoi usare string? ti eviti i limiti dell'array

ciao

LimiT-MaTz
24-01-2005, 14:24
non e' difficile fai cosi':

char *data(int line,FILE *read){
int i=0,lineread=1;
char c,buffer[100];
c = getc(read);

while(c != EOF){

while(c != '\n'){
buffer[i++] = c;
c = getc(read);
}

buffer[i] = '\0'
if(c == '\n'){
i = 0;
if( lineread == line)
return strdup(buffer);
else{
lineread++;
c = getc(read);}
}}
return NULL;
}

possibilie che ci siano degli errori l'ho fatto di getto e non lho provato controllalo ciao :D