Aus Fullname (char) nur Pfadangaben
-
Einfach für die ganze restliche Länge in den String schreiben.
for(i=posBackslash+1;i<strlen(myString);++i) { myString[i]='*'; }
So oder so ähnlich...
-
Meine letzte Post war etwas missverständlich.
Ich möchte gerne alles was nach dem Letzten \ steht löschen so das nur noch ein * im Pfad steht. Siehe Post 1
-
Dabudai schrieb:
Meine letzte Post war etwas missverständlich.
Ich möchte gerne alles was nach dem Letzten \ steht löschen so das nur noch ein * im Pfad steht. Siehe Post 1Dann ist es doch noch einfacher. Einfach an Position [BackslashPosition+1] ein '*' und dahinter eine 0 schreiben.
-
Ich hasse CStrings.
Ich hab es C++Strings genommen. Ist zwar vllt. nicht schön aber ich habe das was ich will.
Wenn es einer schöner kann, kann er es hier posten.const char* pszLog; pszLog = DEFAULT_LOG_FILE_NAME; const char * pch; pch=strrchr(pszLog,'\\'); printf ("Last occurence of '\\' found at %d \n",pch-pszLog+1); string s1 = pszLog; string s2; s2 = s1.substr(0,pch-pszLog+1)+'*'; //printf("STringtest = %s\n",s1.c_str()); //printf("STringtest2 = %s\n",s2.c_str()); const char *newname = s2.c_str(); printf("STringtest = %s\n",newname);
-
Hi,
Dabudai schrieb:
Wenn es einer schöner kann, kann er es hier posten.
ich kanns schöner Bruder, guckst du letzten Post von _matze
-
Dann lass mich bitte nicht summ sterben, und zeig doch bitte eine Beispiel oder die Funktionen welche ich benötige.
-
Wenn du sowieso C++ machst, dann kannst du auch die Funktionen fuer Strings in C++ benutzen. Z.B. rfind. Mittels substr kannst du dann den ganzen vorderen Teil in einen neuen String packen.
-
Dabudai schrieb:
Dann lass mich bitte nicht summ sterben, und zeig doch bitte eine Beispiel oder die Funktionen welche ich benötige.
//z.B. so: myString[BackslashPos+1]='*'; myString[BackslashPos+2]=0; //oder auch so: strcpy(&myString[BackslashPos+1],"*");
-
Dabudai schrieb:
Dann lass mich bitte nicht summ sterben, und zeig doch bitte eine Beispiel oder die Funktionen welche ich benötige.
Ok, Bruder, guckst du:
const char* fname = "C:\\log\\xyz.log"; int main() { char buf[FILENAME_MAX+1] = {0}; char* p; strncpy(buf, fname, FILENAME_MAX ); p = strrchr(buf, '\\'); if ( *(p+1) == 0 ) return 0; // * passt nicht, fname zu lang. if (p) *(p+1) = '*', *(p+2) = 0; puts(buf); return 0; }
Gruß,
B.B.
-
Verflixt zuviel los hier heute :D, das war noch nix, hier der korrigierte main Teil:
char buf[FILENAME_MAX+1] = {0}; char* p; strncpy(buf, fname, FILENAME_MAX ); p = strrchr(buf, '\\'); if(!p) return 0; // Keinen Backslash gefunden. if ( *(p+1) == 0 ) return 0; // * passt nicht, fname zu lang. *(p+1) = '*', *(p+2) = 0;
-
Da ist immer noch n Bug drin
mal sehn, ob es jemand merkt :xmas2:
-
Big Brother schrieb:
Da ist immer noch n Bug drin
mal sehn, ob es jemand merkt
hier, bugfrei und ganz primitiv:
void get_path (char *in, char *out) { char *bs; for (bs=0; *in; in++) { *out++ = *in; if (*in == '\\') bs = out; } if (bs) out = bs; *out = 0; }
^^^muss nur noch ein sternchen drangehängt werden.