| Цитата(Sergio @ 8.10.2008, 20:30) | Сделал попроще (я думаю)
| Код | // return number of index from which fragment begins // if return -1 than not found int find_fragment(char* dest, char* fragment) { int res = -1;
for (int a = 0; a < strlen(dest); a++) { if (dest[a] == fragment[0]) { for (int b = 0; b < strlen(fragment); b++) { if (dest[a + b] == fragment[b]) { res = a; continue; // it's ok go ahead } else { res = -1; break; // find next } } } if (res != -1) // only one matching should be return res; } return res; }
|
| Код | int _tmain(int argc, _TCHAR* argv[]) { char* dest = "F:\\GTP\\Jimi Hendrix\\Hendrix Jimi - Drifting.gp3"; char* fragment = "F:\\GTP\\Jimi Hendrix\\";
int res = find_fragment(dest, fragment);
char resStr[100]; int d = 0; if (res != -1) { for (int c = 0; c<strlen(dest); c++) { if (c < res || c >= strlen(fragment)) { resStr[d] = dest[c]; d++; } } resStr[strlen(dest) - strlen(fragment)] = '\0'; } return 0; }
|
Пожалуйста порефакторьте код. Потому как он очень большой( P.S. извините за на звание переменных  |
Да уж, проще некуда
| Код | int _tmain(int argc, _TCHAR* argv[]) { char* dest = "F:\\GTP\\Jimi Hendrix\\Hendrix Jimi - Drifting.gp3"; char* fragment = "F:\\GTP\\Jimi Hendrix\\";
char* fr=strstr(dest, fragment); if (fr) { char* fr2=fr+strlen(fragment); memmove(fr,fr2,strlen(fr2)+1); }
return 0; }
|
|