36 Stimmen

Nullterminierung einer Zeichenkette

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;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X