Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
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

Quellcode:
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

zum Seitenanfang zum Seitenende 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
Quellcode:
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.
zum Seitenanfang zum Seitenende 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
Quellcode:
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

zum Seitenanfang zum Seitenende Profil || Suche
003
06.12.2002, 16:38
the_viking



Zitat:
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

zum Seitenanfang zum Seitenende 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)

zum Seitenanfang zum Seitenende 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

zum Seitenanfang zum Seitenende 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

zum Seitenanfang zum Seitenende Profil || Suche
007
07.12.2002, 20:08
the_viking



Trim function gibts in c nicht, musste dir schon selber bauen:

Quellcode:
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.
zum Seitenanfang zum Seitenende Profil || Suche