gcc 4.4.4 c89null 문자열 종료 null
문자열을 종료하는 표준 방법은 무엇입니까? NULL
을 사용할 때 경고 메시지가 나타납니다.
*dest++ = 0;
*dest++ = '\0';
*dest++ = NULL; /* Warning: Assignment takes integer from pointer without a cast */
소스 코드 :
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;
}
또 다른 질문 : 나는 의도적으로 종료를 널 (null) 라인을 주석. 그러나, 그것은 여전히 dest의 내용을 정확하게 출력합니다. 이 함수의 호출자는 NULL
을 포함하거나 포함하지 않고 문자열의 길이를 보냅니다. 즉 strlen(src) + 1
또는 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;
}
'* dest ++ = '\ 0'을 선호합니다. ''\ 0 ''이이 문맥에서 올바른 타입을 가지고 있기 때문에. –
@ Paul R : 왜 대답하지 않으시겠습니까? – Lucas
'* dest ++ = 0;'왜 deferenced 값을 0으로 할당 한 후 포인터를 사후 증분 하는가? – Larry