000
04.09.2005, 00:40 Uhr
Pablo
Supertux (Operator)
|
Hallo
ich schrein ein kleines Programm, dass Verzeichnis mit Bildern scannt und fügt sie in eine temporere DB hinzu, dann wählt eins zufällig aus und führt ein externes Programm, das das ausgwählte Bild als Argument enthält.
Nun, das Problem ist, dass so ein Bild /home/supertux/back/bild one.jpg zwar richtig erkannt wird, aber wenn ich so übergebe, dann findet das externe Programm das Bild nicht, wegen dem Leerzeichen. Deswegen wollte ich eine Funktion schreiben, die mir diesen Pfad die Leerzeichen escpat. Ich hab folgendes:
C++: |
int countblankspaces(const char* source) { int count=0, i,len; if(!source) return -1;
len = strlen(source);
for(i=0; i<len; ++i) if(source[i] == ' ') ++count;
return count; }
char* escapepath(const char* path) { char* tmp, *blank, *tmp2; int len, newlen, bscount, i; if(!path) return NULL; len = strlen(path); bscount = countblankspaces(path); if(bscount==-1) return NULL; if(!bscount) return strdup(path);
newlen = len + bscount; tmp = malloc(newlen); if(!tmp) return NULL; *tmp = 0; tmp2 = tmp; for(i=0; i<bscount; ++i) { blank = strstr(path, " "); memmove(tmp2, path, blank - path); tmp2[blank - path] = 0; strcat(tmp, "\\ "); tmp2 += (blank - path) + 2; path = blank + 1; } strcpy(tmp2, path);
return tmp; }
|
aber ich nicht sicher, ob der Code auch gut ist. Habt ihr Verbesserungsmöglichkeiten? -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! |