amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > strcmp aus string.h macht Probleme unter C++ [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

14.07.2009, 23:16 Uhr

Reth
Posts: 1858
Nutzer
Hallo zusammen,

versuche gerade den GigaLoMania-Source für AOS4 zu compilieren.

Nehme dazu Codebench und das neueste SDK!

Compilieren und Linken klappt, Programm startet auch und endet dann mit nem GR.

Dem bin ich auf der Spur, und muss dabei noch sehr viele Sachen anpassen!

Ein Problem das ich habe ist, dass strcmp() nicht zu funktionieren scheint, wenn die Inseldaten ausgelesen werden.
Dabei wird versucht eine Kartenfarbe zu bestimmen:
C++ code:
MapColour map_colour = MAP_UNDEFINED_COL;
if( strcmp(colname, "ORANGE") == 0 ) {
	map_colour = MAP_ORANGE;
}
else if( strcmp(colname, "GREEN") == 0 ) {
	map_colour = MAP_GREEN;
}
else if( strcmp(colname, "BROWN") == 0 ) {
	map_colour = MAP_BROWN;
}
else if( strcmp(colname, "WHITE") == 0 ) {
	map_colour = MAP_WHITE;
}
else if( strcmp(colname, "DBROWN") == 0 ) {
	map_colour = MAP_DBROWN;
}
else if( strcmp(colname, "DGREEN") == 0 ) {
	map_colour = MAP_DGREEN;
}
else if( strcmp(colname, "GREY") == 0 ) {
	map_colour = MAP_GREY;
}
else {
	LOG("unknown map colour: %sn", colname);
	ok = false;
	break;
}


Das Seltsame dabei ist, dass in colname z.B. BROWN steht, der entsprechende Vergleich mit strcmp() aber 13 statt 0 ergibt, so dass ich immer im letzten else lande (getestet mit:
C++ code:
printf("map color: '%s'n", colname); // Ausgabe: map color: 'BROWN'
printf("strcmp(colname, "BROWN"): %dn", strcmp(colname, "BROWN")); // Ausgabe: strcmp(colname, "BROWN"): 13

)!

Folgendes:
C++ code:
strlen(colname);

gibt mir 7 aus, wenn colname = "DBROWN" ist, die Länge der Stringkonstanten "DBROWN" ist allerdings nur 6!

Scheint daran zu liegen, dass in colname auch das anschließende CR mit eingelesen wurde! Allerdings wird die Textdatei nicht im Binärmodus geöffnet (sondern mit "r"), so dass ich mich wundere, wieso hier der CR mit eingelesen wird!?

Um den Monolog fortzuführen: Ist wohl so! Hab mal alle .map-Dateien auf dem Amiga geöffnet und wieder gespeichert. Nun können alle einwandfrei gelesen werden.
Werde mal versuchen, dem strtok, dass beim parsen Verwendung findet noch ein 'n' oder 'r' mit zu geben, damit auch die PC-Version dieser Dateien funktioniert!

Ciao

[ Dieser Beitrag wurde von Reth am 15.07.2009 um 00:45 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > strcmp aus string.h macht Probleme unter C++ [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.