Funcția C++ strcpy
copiază un șir de caractere sursă în alt șir de caractere, destinație. Sintaxa ei este:
char * strcpy(char * dest, const char * src );
În documentația C++ este precizat că această funcție are un comportament impredictibil dacă șirurile src
și dest
se suprapun.
Cu toate acestea, a devenit o practică uzuală ștergerea unor caractere dintr-un șir cu un apel de forma: strcpy(s + i, s + i + 1);
(pentru ștergerea caracterului de indice i
din șirul s
). Numeroase soluții ale problemelor cu șiruri de caractere de pe pbInfo.ro, inclusiv soluții oficiale, folosesc această metodă pentru eliminarea unor caractere dintr-un șir, metodă care a funcționat în versiunile mai vechi ale compilatorului GCC, dar nu mai funcționează în versiunea curentă.
Recomandăm tuturor utilizatorilor pbInfo.ro să evite eliminarea caracterelor dintr-un șir prin metoda descrisă mai sus. O metodă alternativă, care funcționează corect, utilizează un șir de caractere suplimentar, astfel:
char s[256], t[256]; ... //eliminam caracterul de indice i din s strcpy(t, s + i + 1); strcpy(s + i, t);