strcpy () - копиране на дълъг низ по-кратки

S

sivamit

Guest
Здравейте, как този код ..? Чар * р = "WiMAX", Чар ARR [3]; strcpy (ARR, п); printf ("% S", ARR) Изход: WiMAX компилатор doesn't показва предупреждение или съобщение за грешка .. whatz на prblm ..? Моля помогне ..!!!
 
Това е предимство (г) от указатели в C. ARR е в основата на показалеца на паметта, където започва ARR. В strcpy (ARR, п) можете да го използвате като показалка, какво strcpy прави копие на всички данни от източника до местоназначението, докато намери NULL характер (която е компилатор ми след низ "WiMAX" автоматично). Така че в крайна копиране на пълен низ от п ARR. ако декларирате променлива, след ARR [3]; можете да видите, че стойността му е заменена от strcpy ().
 
Мисля, че прикачения файл може да изясни проблема си .... : D: идея:
 
ARR се нуждае от 6 единици на съхранение, 5 за "WiMAX" и един за нула терминатор характер (0). AC компилатор не пише, Гледане на код за програмист. Ако вие презаписвате памет, са по своему, компилатора не генерира границите, проверка на код. В този случай strcpy () не е презаписване на памет, която би разбил програмата.
 

Welcome to EDABoard.com

Sponsor

Back
Top