Tại sao không thể gọi con trỏ s được?

sao nó không thể gọi con trỏ s được vậy?
ngoài ra mình còn sai gì xin chỉ giáo

1 Like

bạn ơi,hàm đếm từ dùng trong đếm ký tự phải để lên trước
code của bạn chưa compile đến hàm đếm từ mà bạn đã gọi hàm
tham khảo thử bài viết này xem

2 Likes

Theo 1 lỗi (Error) và 2 cảnh báo (Warning):

  • Lỗi: hàm demtu chưa được khai báo từ dòng 7. Thực thi tuần tự, nên khi đến dòng 7, nó không tìm thấy hàm nào tên demtu, vì demtu được định nghĩa ở dòng 9 (sau dòng 7). Cách khắc phục:
    1. Chuyển hàm demtu ra trước hàm demkytu. Cách này tạm ổn.
    2. Khai báo các hàm trước khi định nghĩa/triển khai nó. Đó là cách hoạt động hiệu quả. Lý do vì sao có tập tin *.h.c đấy. Phần header (*.h) chứa khai báo của hàm và nhiều thứ khác. Tuy nhiên bạn vẫn có thể khai báo trong cùng 1 tập tin.
#include ...
int demkytu(char*, int); // khai báo
int demtu(char*, int); // khai báo

// main() có thể đặt ở đây...

int demkitu(char* a, int n){ // định nghĩa/triển khai

}
int demtu(char* a, int n){ // dn/tk

}

// ...hoặc đặt main() ở đây cũng được.
  • Cảnh báo: bạn dồn 2 ký tự vào 1 ký tự. '/0' là 2 ký tự. Mình biết ý bạn là '\0' (ký tự NUL - 0). Bạn để ý lại, kí tự NUL là '\0', gạch chéo ngược \ chứ không phải gạch chéo xuôi /.
  • Cảnh báo: vẫn dòng 11, điều kiện so sánh luôn đúng do giới hạn của kiểu dữ liệu (char). Có nghĩa vòng lặp sẽ lặp vô tận, vì không có ký tự đơn nào bằng '/0'. Sửa cảnh báo trên, cảnh báo này cũng sẽ mất.
3 Likes

cảm ơn các bạn nhiều, làm mình hiểu rõ hơn cái lỗi của mình

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?