Frage zu sscanf
-
Hallo!
Wenn ich
char temp[256], dummy[256]; sscanf("ag.bg", "%s.%s", &dummy, &temp);mache, ist weder dumm ab noch temp bg - wieso nicht?
Was müsste ich anders machen?
-
char temp[256], dummy[256]; strcpy( temp, "ag" ); strcpy( dummy, "bg" );greetz, Swordfish
-
Ja, eigentlich gehts um was ganz anderes...
DIR *verzeichniss; struct dirent *eintrag; verzeichniss = opendir("level"); if (!verzeichniss) throw; char dateien[16][260]; char temp[256], dummy[256]; int i_dat=0; while ( ( eintrag=readdir(verzeichniss) ) && i_dat<16) { sscanf(eintrag->d_name, "%s.%s", &dummy, &temp); if ( strcmp(temp, "lvl")==0 ) { strcpy(dateien[i_dat], eintrag->d_name); ++i_dat; } } closedir(verzeichniss);Eigentlich will ich ja die Endung kriegen. Das mit ab.gb war nur ein Beispiel...
-
der punkt muss ein leerzeichen sein, weil 'sscanf' strings nur bis zu 'white space' einliest. dann sollte es gehen.
falls du windows benutzt: http://msdn2.microsoft.com/en-us/library/e737s6tf(VS.80).aspx

-
Das ganze ist SDL und bissl C++-Libraryzeug, demzufolge möcht ich ungern auf Windowsspezifische Sachen zurückgreifen

Kann mir jemand zufällig sagen, ob es so was wie str_replace in php auch in C++ gibt? Dann mach ich einfach das . zu nem Leerzeichen und das geht..
Oder gibts ne Möglichkeit, sonst die letzen 3 Buchstaben des Namens zu ermitteln?
-
DaGeRe schrieb:
Das ganze ist SDL und bissl C++-Libraryzeug, demzufolge möcht ich ungern auf Windowsspezifische Sachen zurückgreifen

Kann mir jemand zufällig sagen, ob es so was wie str_replace in php auch in C++ gibt? Dann mach ich einfach das . zu nem Leerzeichen und das geht..
Oder gibts ne Möglichkeit, sonst die letzen 3 Buchstaben des Namens zu ermitteln?Wenn du schon solche Sachen mit den Strings anfangen willst, kann ich dir nur raten auf std::string umzusteigen, da ist eine Menge wesentlich einfacher und es man muss sich keine Sorgen um Buffer-Overflows etc. machen.
-
DaGeRe schrieb:
Oder gibts ne Möglichkeit, sonst die letzen 3 Buchstaben des Namens zu ermitteln?
nach dem '.' müssen ja nicht zwangsläufig 3 zeichen kommen.
vielleicht sowas?char *behind_first_point (char *in) { while (*in) if (*in++ == '.') return in; return 0; } ... char *behind_last_point (char *in) { char *p = 0; while (*in) if (*in++ == '.') p = in; return p; }erstere findet den ersten punkt, die andere funktion den letzten.
beide geben 0 zurück, wenn kein punkt da war.char *test = "la.la.doof"; cout << behind_last_point(test) << endl;
-
Hey undertaker

Herzlichen Danke, dass du hier einfach so ne Funktion für mich machst
Hab ja schon die Artikel von wegen "wir müssen dir nicht helfen, sei lieb" und so gelesen, und find das echt total toll 
Die behindlastpoint suchte ich natürlich für meinen Code. Leider habe ich jetzt gerade das ganze mit std::string gelöst... Aber finds trotzdem toll, dass du einfach so ne Funktion erstellt hast.
-
Vermutung: Die Strings müssen nicht mit & angegeben werden.