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;
}
HK boy viết 12:52 ngày 01/10/2018

&String[n]

Hình như warning ở đây.

Đạt Trình viết 12:51 ngày 01/10/2018

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.

Duc Khan viết 12:49 ngày 01/10/2018

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 *

rogp10 viết 12:51 ngày 01/10/2018

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.

Đạt Trình viết 12:55 ngày 01/10/2018

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.

Duc Khan viết 12:57 ngày 01/10/2018

Bạn thêm vào cả return type nữa : const char *chr(...)

Đạt Trình viết 12:50 ngày 01/10/2018

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

Bài liên quan
0