strcpy () - kopiowanie dłuższy łańcuch krótszy

S

sivamit

Guest
Hi jak to działa kod ..? char * p = "wimax"; char tab [3]; strcpy (arr, p); printf ("% s", tab); wyjścia: wimax kompilator robi wykazują żadnych ostrzeżenie lub komunikat o błędzie .. Whatz prblm ..? Proszę o pomoc ..!!!
 
Thats (d) wykorzystanie wskaźników w C. arr jest po prostu wskaźnik do pamięci, gdzie zaczyna arr. W strcpy (arr, p) używasz go jako wskaźnik, co strcpy nie kopiuje wszystkie dane ze źródła do miejsca przeznaczenia, dopóki nie znajdzie znakiem NULL (co było miejsca mój kompilator po ciągu znaków "wimax" automatycznie). Więc możesz skończyć kopiowania kompletny łańcuch od p do tabl. jeśli zadeklarować zmienną po tab [3], można zauważyć, że jego wartość jest zastępowana przez strcpy ().
 
Myślę, że załącznik może wyjaśnić problem .... : D: idea:
 
arr potrzeb 6 jednostek składowania, 5 dla "wimax" i jeden dla znak null terminator (0). AC kompilator nie pisać opiekunki kod dla programisty. Jeśli nadpisać pamięć, jesteś na swoim własnym, kompilator nie generuje mechanizmu sprawdzania kodu. W tym przypadku strcpy () nie nadpisać pamięć, że awarii uległy programu.
 

Welcome to EDABoard.com

Sponsor

Back
Top