01/10/2018, 09:19

Mảng Ký tự trong C

E đang làm một cái hàm copy_string theo cách return về. Nhưng bị vướng lúc khai báo để nhận kết quả return.
Ai có thể cho e cách khai báo một cái mảng kí tự nhận được một mảng kí tự khi return từ function được không ạ?


Khoa NTA viết 11:26 ngày 01/10/2018

Khi khai báo mảng cho C thì luôn phải xác định số lượng phần tử cụ thể, char name2[] = copy_str(name); là mơ hồ vì không biết kết quả return là dài ngắn bao nhiêu cả.

Copy kiểu vậy thì còn được gọi là Duplicate, hàm tương đương char *strdup(const char *str);. Nhưng thực chất hàm copy_str của bạn không thực sự ‘copy’ vì nó chỉ đơn thuần là trả về địa chỉ cũ thì không có khác biệt với toán tử gán giá trị cả. Bạn có thể dễ dàng tìm được mã nguồn của strdup về tham khảo mà chúc bạn thành công.

Nếu vẫn chưa được thì bạn tham khảo cấp phát động, con trỏ (chuỗi). Dùng cấp phát động để xin cấp phát 1 vùng nhớ đủ lớn bằng kích thước chuỗi đưa vào str, sau đó là copy từng giá trị trên str vào vùng nhớ đó, return kết quả là xong.

Henry viết 11:24 ngày 01/10/2018

lúc e thử khai báo cả số lượng nó vẫn không được nhưng e thử khai báo theo kiểu con trỏ giống như kiểu con trỏ hàm trả về thì được ạ.

Khoa NTA viết 11:34 ngày 01/10/2018

Đúng rồi em, anh đang nói cú pháp của C là mảng cần số lượng còn cái em trả về là con trỏ đang trỏ tới mảng.

Henry viết 11:24 ngày 01/10/2018

Tại e nghĩ nó cũng như mảng số thôi ai dè

Henry viết 11:24 ngày 01/10/2018

à a qua được round 18 chưa :V e vẫn đang bí

Khoa NTA viết 11:23 ngày 01/10/2018

Lol, chuyện riêng thì em nên dùng message Làm anh hết hồn vì tưởng nay daynhauhoc hoạt động lỗi, post bài lộn topic. Em check messagebox nhé.

Bài liên quan
0