|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
underberg JLI'ler
Anmeldedatum: 11.01.2003 Beiträge: 153
Medaillen: Keine
|
Verfasst am: 07.06.2003, 12:58 Titel: fscanf |
|
|
Das steht in einer Datei:
Code: | #Object
D:\Ufo\graphics\rahmen.obj
0
0
#EndFile |
Und das ist der QuellCode:
Code: | FILE* datei;
datei=fopen(Level_Path,"r");
for (int i=0;i<=3;++i)
{
fscanf(datei,"%s",&temptext);
if (temptext=="#Object") writetext(100,i*20,temptext);
}
fclose(datei); |
Er öffnet die Datei Fehlerfrei... Das hab ich alles überprüft...
Der Fehler liegt darin, dass er nie die if-Bedingung erfüllt...
Warum nicht??? |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 07.06.2003, 13:11 Titel: |
|
|
Weil man in C++ Strings (char*) nicht mit == vergleichen kann. Du benötigst strcmp():
Code: |
if(!strcmp(temptext,"#Object"))
{
writetext(100,i*20,temptext);
}
|
Wichtig ist dabei der Rückgabewert von strcmp().
Christian |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 07.06.2003, 22:47 Titel: |
|
|
Desweiteren musst du eine Variable für das Abspeichern des Strings erst mal definieren. Und danach solltest du noch überprüfen, ob der Speicherplatz überhaupt reicht, den du (derzeit noch nicht) reserviert hast.
Der verbesserte Code sieht also folgendermassen aus:
Code: | FILE *datei;
const char Level_Path = "D:\level.dat";
char temptext[100];
datei=fopen(Level_Path, "r");
if(!datei) {
//Fehlerbehandlung, Datei nicht gefunden
} else {
for(int i=0; i<3; i++) {
fscanf(datei, "%99s", temptext);
if(strcmp(temptext, "#Object")==0)
printf("%d: %s\n", i, temptext);
}
fclose(datei);
}
|
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|