Et måske mindre problem

Tags:    c++ delphi

Et program skal tage en tekstfil med ^'er som adskilning og skal gemme hver information for sig i et array. Et eksempel på test.txt:

Dette^er^C++

Problemet er, at den kun gemmer det sidste tegn fra hver information, og at den ikke tager den sidste information. Desuden skal den have en "stopper" der gør, at den kun tager fra en specifik linje. Er der nogen der kunne komme med tilføjelser/rettelser i koden så det kommer til at virke? Det ville være meget dejligt!

Her er koden:

#include <iostream.h>
#include <fstream.h>

void main(void) {

ifstream infile("test.txt");

char tegn;
char fjern;
char output[255];

int counter;
int max;

counter = 1;

fjern = '^';

while (! infile.eof()) {
tegn = infile.get();



if (tegn == fjern) {
counter++;
} else {
output[counter] = tegn;
}
}


max = counter;

counter = 1;


while (counter != max) {
cout << "Output : " << output[counter] << " :" << endl;
counter++;
}

cout << endl;

}



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato

Det du glemmer, er at lægge counter et til, så while løkken kan læse videre i teksten.
Du lægger kun en til, hvis der er en ^, og det er der jo ikke hele tiden :)
Så den vil ikke kunne læse hele teksten, men hvis du prøver at skrive counter++ først i løkken, skulle den gerne skrive teksten ud. Men så er der bare et proboblem, med den der fjern. Den fjerner ikke ^.
Min kode:
Fold kodeboks ind/udKode 

Med Venlig Hilsen: CHadi
http://chadi.h4f.dk



Det var vist ikke helt sådan jeg havde tænkt mig at det skulle være... Måske ville det være nemmere hvis jeg lige udtrykte mig ordentligt denne gang :-)

Jeg vil gerne kunne gemme fra ^ til ^ - sådan lidt som at læse en eksporteret database.
Et eksempel:

Filen indeholder:


Navn^E-mail^Hjemmeside
Jens Hansen^jens@hansen.dk^http://www.jenshansen.dk
Hans Jensen^hans@jensen.dk^http://www.hansjensen.dk

Læg mærke til at første linje i filen ikke er data... det er titlen på hver "kolonne"

Det vil være fint hvis det kan lade sig gøre, at oprette nogle funktioner der gør dette muligt:

Fold kodeboks ind/udKode 


Det minder jo meget om ASP når man skal læse en database. Så det kan godt være det ikke er et "mindre" problem... men jeg håber da at der er nogen der vil hjælpe :-)



Har du fundet ud af det?

Ville det ikke vaere nemmere at bruge en string-tokenizer?

Laes én linie ad gangen fra filen og koer foelgende paa hver linie:

char Tuple[] = "R. And^Paradisaeblevej 1^Andeby";
char* TokenPtr = strtok(Tuple, "^");

while (TokenPtr != NULL)
{
printf("%s\\n", TokenPtr);

TokenPtr = strtok(NULL, "^");
}

Det vil give et output i stil med:
R. And
Paradisaeble vej 1
Andeby




t