gcc 4.4.4 c89null chấm dứt chuỗi
Cách tiêu chuẩn để hủy kết thúc chuỗi là gì? Khi tôi sử dụng NULL
tôi nhận được một thông báo cảnh báo.
*dest++ = 0;
*dest++ = '\0';
*dest++ = NULL; /* Warning: Assignment takes integer from pointer without a cast */
Source code:
size_t s_strscpy(char *dest, const char *src, const size_t len)
{
/* Copy the contents from src to dest */
size_t i = 0;
for(i = 0; i < len; i++)
*dest++ = *src++;
/* Null terminate dest */
*dest++ = 0;
return i;
}
Câu hỏi khác: Tôi cố tình nhận xét ra các dòng đó là null chấm dứt. Tuy nhiên, nó vẫn chính xác in ra các nội dung của dest. Người gọi hàm này sẽ gửi độ dài của chuỗi bằng cách bao gồm NULL
hay không. tức là strlen(src) + 1
hoặc stlen(src)
.
size_t s_strscpy(char *dest, const char *src, const size_t len)
{
/* Copy the contents from src to dest */
size_t i = 0;
/* Don't copy the null terminator */
for(i = 0; i < len - 1; i++)
*dest++ = *src++;
/* Don't add the Null terminator */
/* *dest++ = 0; */
return i;
}
Tôi thích '* dest ++ = '\ 0'; 'vì' '\ 0'' có kiểu đúng trong ngữ cảnh này. –
@Paul R: Tại sao bạn không trả lời câu hỏi này? – Lucas
'* dest ++ = 0;' tại sao sau khi tăng con trỏ sau khi gán giá trị trì hoãn cho 0? – Larry