20. november 2003 - 11:27
Der er
21 kommentarer og 2 løsninger
Læse tekstfil
Hej, Jeg sidder og koger over noget kode jeg skal lave. Jeg har en tekstfil, der indeholder: "string" "int" "int" "int "int" "string" "int" "int" "int "int" "string" "int" "int" "int "int" "string" "int" "int" "int "int" .. .. Jeg skal læse hver enkelt string og int ind i mit program og når den sidste "int" på en linie er læst skal jeg køre noget i mit program. Så med anden linie osv.
Annonceindlæg fra Conscia
20. november 2003 - 11:46
#1
Åben filen med fopen, while løkke som bruger fgets til at læse en linie og sscanf til at parse items med.
20. november 2003 - 11:49
#2
Jeg har følgende kode: { int data[4], dato, tid, antalPladser, antalResv, next; string titel; char navn; ifstream ins; ins.open("forestilling.txt"); do { ins.get(navn); titel = navn; for (int i = 0; i < 4; i++) { data[i] = next; ins.get(next); } for (int i = 0;i < 4; i++) cout << data[i] << " "; } while (! ins.eof()); Jeg tror ikke helt jeg forstår hvad du skriver!
20. november 2003 - 11:52
#3
Jeg snakkede C - du er ovre i meget C++. Hvis der ikke er mellemrum i navn kan du bruge: ins.open("forestilling.txt"); while(!ins.eof()) { ins >> navn >> data[0] >> data[1] >> data[2] >> data[3]; }
20. november 2003 - 11:53
#4
Ja c++
20. november 2003 - 12:04
#5
Det er tæt på men det virker sgu ikke helt! Jeg kan ikke helt gennemskue hvad f..... der går galt. Der står følgende i tekstfilen: MissSophie 31224 2000 3 36 Og der kommer følgende ud i programmet: MissSophie 1213912 1213912 1213912 1213912 ???
20. november 2003 - 12:11
#6
Any clues????
20. november 2003 - 12:17
#7
Hvordan ser din kode ud nu ?
20. november 2003 - 12:19
#8
{ int data[4], dato, tid, antalPladser, antalResv, next; string titel, navn; ifstream ins; ins.open("forestilling.txt"); while(!ins.eof()) { ins >> navn >> data[0] >> data[1] >> data[2] >> data[3]; } cout << navn << " " << data[0] << " " << data[1] << " " << data[2] << " " << data[3]; }
20. november 2003 - 12:26
#9
prøv at udelade navn ins >> data[0] >> data[1] >> data[2] >> data[3]; en gang
20. november 2003 - 12:31
#10
så kommer de samme tal bare ud... 1213912 1213912 1213912 1213912
20. november 2003 - 12:39
#11
Prøv sådan istedet: { int data[4], dato, tid, antalPladser, antalResv, next; string titel, navn; ifstream ins; ins.open("forestilling.txt"); while(!ins.eof()) { ins >> navn >> data[0] >> data[1] >> data[2] >> data[3]; cout << navn << " " << data[0] << " " << data[1] << " " << data[2] << " " << data[3]; } } skriver den en eller 2 linier?
20. november 2003 - 12:55
#12
to linier, den første er rigtig, den anden er forkert!
20. november 2003 - 12:56
#13
hvad fanden er egentlig forskellen på det to koder??? Jeg kan sgu ikke se det!
20. november 2003 - 12:58
#14
hvordan får jeg den sidste forkerte linie væk?
20. november 2003 - 12:58
#15
segmose flyttede bare udskriviningn ind i løkken så hver linie bliver udskrevet i.s.f. kun den sidste.
20. november 2003 - 12:58
#16
Du har med 99% sandsynelighed en tom linie til sidst i input-filen. Fjern den !
20. november 2003 - 13:00
#17
korrekt!
20. november 2003 - 13:30
#18
Hvis den kan forvirres af en tom linie er indlæsningen ikke særlig rubust, specielt synes jeg at når navn ikke overskrives er den helt gal. Der bør laves et check for at se om hver >> lykkedes, her kan jeg dog ikke hjælpe da jeg ikke bruger streams (endnu).
20. november 2003 - 14:05
#19
Man kan teste på !ins og !ins.eof() efter hver operation. Men hvis man skal have fuld styr på input så er >> nok ikke det rigtige.
30. november 2003 - 22:59
#20
lukketid ?
30. november 2003 - 22:59
#21
og et svar
30. november 2003 - 23:42
#22
segmose: kommer du med et svar så vi kan lukke her?
01. december 2003 - 08:56
#23
svar!
Kurser inden for grundlæggende programmering