Funcția strcpy

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);
Părerea ta contează. A fost utilă această pagină?