000
04.12.2002, 20:00
snoopdog
|
Hi, ich häng hier irgendwie derbst fest. ich hab ne datei in der steht.
vertex 1.0|1.0|1.0 1.0|-1.0|0.0 0.0|-1.0|-1.0
so die soll so ausgelesen werden. Wenn die erste Zeile vertex ist, sollen die nächsten 3 Zeilen auch ausgelesen werden.
Dazu hab ich bsi jetzt das hier
void LoadFile(char *filename) { FILE *file; char Input[15]; char Output[10];
int i;
file=fopen(filename,"r");
for(i=0;i<=6;i++) { fgets(Input,15,file); if(Input=="vertex") { fscanf(file,"%f|%f|%f\n",&m_Vertex[i].x,&m_Vertex[i].y,&m_Vertex[i].z); }
}
fclose(file);
}
wisst ihr wie ich des machen kann?? PS: m_Vertex is ne struct...aber daran liegt es nciht, ohne die if geht es nämlich.
--
Visit our 500er Gamer Lan @ www.evil-lanparty.de or @ www.evil-havoc.com Visit the HaVoc Lanparty Community @ www.havoc-lanparty.com
|
|
Profil || Suche
|
001
04.12.2002, 20:36
Archangel
|
ARRRRRRRRRRGGGGGGGGGG!
c-strings vergleicht man doch nicht mit == ! wennschon müsste das so aussehen:
if(!strcmp(Input, "vertex")) ...
was aber auch nich funktionieren würde, da fgets noch das '\n' (und evtl auch '\r' ?) einliest.. also das erst entfernen
char *p; .. fgets(Input, 15, file);
// so in etwa, CR/LF entfernen p = strchr(Input, '\r'); if(p) *p = '\0';
p = strchr(Input, '\n'); if(p) *p = '\0';
if(!strcmp(Input, "vertex)) ...
--
Mar 01 01:10:13 <voice> jo Mar 01 01:10:40 <voice> bis dann ^^ Mar 01 01:11:20 <Archangel> jo **** ENDING LOGGING AT Tue Mar 1 01:58:13 2005
Dieser Beitrag wurde am 04.12.2002 um 20:36 von Archangel bearbeitet.
|
|
Profil || Suche
|
002
04.12.2002, 21:15
snoopdog
|
hmm hab des nu so gemacht du du des sagtest, doch dann geht es immernoch net heir nun mal der code
void LoadFile(char *filename) { FILE *file; char Input[15]; char Output[10]; char *p;
int i;
file=fopen(filename,"r");
for(i=0;i<=6;i++) { fgets(Input,15,file); p = strchr(Input, '\r'); if(p) *p = '\0'; p = strchr(Input, '\n'); if(p) *p = '\0'; if(!strcmp(Input, "vertex")) { fscanf(file,"%f|%f|%f\n",&m_Vertex[i].x,&m_Vertex[i].y,&m_Vertex[i].z); }
}
fclose(file);
}
--
Visit our 500er Gamer Lan @ www.evil-lanparty.de or @ www.evil-havoc.com Visit the HaVoc Lanparty Community @ www.havoc-lanparty.com
|
|
Profil || Suche
|
003
06.12.2002, 16:38
the_viking
|
snoopdog postete vertex 1.0|1.0|1.0 1.0|-1.0|0.0 0.0|-1.0|-1.0
Sollen das 3 vertexe sein die nach vertex ausgelesen werden? mach mal mit if(file != NULL) überprüfung, ob die datei überhaupt geöffnet wurde und unter windows am besten file = fopen(filename,"rt"), damit er das im Plain-Text format öffnet. Sonst kann ich dir mal empfehlen, ein anderes trennzeichen als "|" zu benutzen. wie wärs mit nem einfachen " "?
und wiso eigendlich for(int i=0;i<6;i++), dann liest du ja nur die ersten 6 zeilen und wenn weniger als 6 zeilen in der datei vorhanden sind liest er die letzte zeile mehrmals.
ICH HAB DEN FEHLER: nicht: if(!strcmp(Input,"vertex")) sondern if(strcmp(input,"vertex") == 0) DAS sollte auf jedenfall funzen!
--
thx, cu, MfG the_viking
(( My =]=H=O=M=E=> Page! )) Coder bei Brainshock-Interactive und bei Z-Software My ICQ: #160959446
|
|
Profil || Suche
|
004
06.12.2002, 16:59
Kriz
|
Doll...
!strcmp() und strcmp()==0 sind für den Compiler gleich... Hat was mit Typumwandlung zu tun (bool <> int) bei if-Abfragen.
Und wenn der Compiler das net rafft, dann ist er irgendwie komisch.
--
K:R-I)Z++ "CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp In memory of Voice ( 2005/03/30)
|
|
Profil || Suche
|
005
06.12.2002, 17:18
Fraghunter
|
sagt mal, giebt es in C keine trim() funktion?
--
Nihil timeo, nulla re opprimor, nulli periculo cedo. www.TheDoenerKing.de
|
|
Profil || Suche
|
006
07.12.2002, 17:34
snoopdog
|
is mir klar, das !strcmp() das gleiche ist wie strcmp() == 0 hab es nur mal anders geschriben, wegen übersichtlichkeit. naja @ the viking, der öffnet die Datei schon, der ließt es auch richtig ein. Also Zeiel für zeile, nur der kopiert de nstring vertex auch in die struct, vermute ich jedenfalls, bzw. er versucht es...
--
Visit our 500er Gamer Lan @ www.evil-lanparty.de or @ www.evil-havoc.com Visit the HaVoc Lanparty Community @ www.havoc-lanparty.com
|
|
Profil || Suche
|
007
07.12.2002, 20:08
the_viking
|
Trim function gibts in c nicht, musste dir schon selber bauen:
char* trim(char* toTrim,char* chars_to_trim_away) { long slen = strlen(toTrim); long clen = strlen(chars_to_trim_away); char* buffer = new char[slen]; bool found = false; strcpy(buffer,toTrim); int ii=0; for(int k=0;k<slen;k++) { found = false; for(int j=0;j<clen;j++) { if(buffer[k] == chars_to_trim_away[j] && chars_to_trim_away[j] != '\0') // Damit wir nicht das stringende wegtrimmen.... { found = true; break; } }
if(found) continue; toTrim[ii] = buffer[k]; toTrim[ii+1] = 0; ii++; } strcpy(toTrim,buffer); delete[] buffer; return toTrim; }
Das sollte funzen...
--
thx, cu, MfG the_viking
(( My =]=H=O=M=E=> Page! )) Coder bei Brainshock-Interactive und bei Z-Software My ICQ: #160959446
Dieser Beitrag wurde am 07.12.2002 um 20:10 von the_viking bearbeitet.
|
|
Profil || Suche
|