gcc 4.4.4 c89null endet eine Zeichenfolge
Was ist der normale Weg, um eine Zeichenfolge null beenden? Wenn ich die NULL
benutze bekomme ich 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 absichtlich die Zeile, die beendet null Kommentar gesetzt. Der Inhalt des Zielverzeichnisses wird jedoch korrekt ausgedruckt. Der Aufrufer dieser Funktion würde die Länge der Zeichenfolge entweder mit der Nummer NULL
senden oder nicht. d.h. strlen(src) + 1
oder stlen(src)
.
Ich bevorzuge '* dest ++ = '\ 0'; 'da' '\ 0'' in diesem Zusammenhang den richtigen Typ hat. –
@Paul R: Warum machst du das nicht eine Antwort? – Lucas
'* dest ++ = 0;' Warum post-incrementieren Sie den Zeiger, nachdem Sie den Wert auf Null gesetzt haben? – Larry