strcpy () - sao chép chuỗi dài hơn một ngắn hơn

S

sivamit

Guest
Hi làm thế nào để mã này làm việc ..? char * p = "WiMAX"; char arr [3]; strcpy (arr, p); printf ("% s", arr); Output: WiMAX trình biên dịch không hiển thị bất kỳ cảnh báo hoặc thông báo lỗi .. whatz prblm ..? Xin vui lòng giúp đỡ ..!!!
 
Thats lợi thế (d) của con trỏ trong C. arr về cơ bản là một con trỏ đến một bộ nhớ nơi mà arr bắt đầu. Strcpy (arr, p), bạn đang sử dụng nó như một con trỏ, những gì strcpy không sao chép tất cả dữ liệu từ nguồn tới đích cho đến khi nó tìm thấy ký tự NULL (là nơi trình biên dịch của tôi sau khi chuỗi "WiMAX" tự động). Vì vậy, bạn sao chép chuỗi hoàn chỉnh từ p arr. nếu bạn khai báo một biến sau khi arr [3], bạn có thể thấy rằng giá trị của nó là ghi đè bởi strcpy ().
 
Tôi nghĩ rằng tập tin đính kèm có thể làm rõ vấn đề của bạn .... : D: ý tưởng:
 
arr nhu cầu 6 đơn vị lưu trữ, 5 'WiMAX và một kết thúc ký tự null (0). AC trình biên dịch không ghi mã giữ trẻ cho một lập trình viên. Nếu bạn ghi đè lên bộ nhớ, bạn đang ở trên của riêng bạn, trình biên dịch không tạo ra giới hạn mã kiểm tra. Trong trường hợp này, strcpy () không ghi đè lên bộ nhớ mà có thể đã bị rơi chương trình.
 

Welcome to EDABoard.com

Sponsor

Back
Top