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 = '\0';
    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;
}

Hình như warning ở đây.

1 Like

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ành char *String hoặc kiểu trả về là const char *

1 Like

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.

1 Like

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(...)

1 Like

Okay rồi clean rồi cảm ơn bạn =))

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