Gcc 4.4.4 c89
Wie wird eine Zeichenkette standardmäßig mit Null beendet? Wenn ich die NULL
Ich erhalte eine Warnmeldung.
*dest++ = 0;
*dest++ = '\0';
*dest++ = NULL; /* Warning: Assignment takes integer from pointer without a cast */
Quellcode:
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;
}
Eine andere Frage: Ich habe die Zeile, in der die Null endet, absichtlich auskommentiert. Trotzdem wurde der Inhalt von dest korrekt ausgedruckt. Der Aufrufer dieser Funktion würde die Länge der Zeichenkette senden, indem er entweder die NULL
oder nicht. d.h. strlen(src) + 1
o 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;
}