01/10/2018, 10:44
Hỏi về hàm strchr
Mình mới học lập trình C, mình muốn viết hàm strchr()
nhưng khi chạy thử thì nó báo warning
như thế này:
warning: assignment discards 'const' qualifier from pointer target type
mình muốn hỏi: ý của warning
là gì và sửa lại như thế nào?
char *chr(const char *String, int characterSearch)
{
char *NewStr = ' ';
for (int n = 0; n < length(String); ++n)/* bien n dùng để lặp lại số lần đúng
bằng số các ký tự trong mảng String*/
{
if (characterSearch == String[n])
{
NewStr = &String[n];/* Cái này dùng để gán địa chỉ của String[n]
vào pointer NewStr*/
break;
}
}
return NewStr;
}
Bài liên quan
Hình như warning ở đây.
giải thích giùm mình được không bạn, mình hiểu chỗ đó sao bị warning nữa. =))
trên web thì mình thấy để cái hàm
strchr()
trả về pointer, mới học pointer nên cũng không rành mấy. Nên mới đặt vậy.Do bạn khai báo hàm có tham số
const char *String
mà ở dưới bạn lại gán chochar *
. Nó gây ra warning. Một số compiler khác có thể sẽ báo lỗi. Để fix thì bạn có thể sửa thànhchar *String
hoặc kiểu trả về làconst char *
Thực ra const này có ý là không thay đổi. Vì vậy kiểu trả về cũng phải là const.
thêm const và trước cái khai báo này hả bạn
char *NewStr = '\0';
, thêm trước cái này nó ghi warning ngay dòng return:Warning: return discards 'const' qualifier from pointer target type.
Bạn thêm vào cả return type nữa :
const char *chr(...)
Okay rồi clean rồi cảm ơn bạn =))