ist, dass der Zeichen-Null-Terminator in der Längenzählung enthalten ist
#include <stdio.h>
int main(int argc, char *argv[]) {
char s[]="help";
printf("%d",strlen(s));
}
Warum die Ausgabe oben ist 4, nicht 5 ist die richtige Antwort?
sollte es sein, 'h','e','l','p','\0' im Speicher..
Dank.
InformationsquelleAutor der Frage runcode | 2013-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
strlen
: Gibt die Länge des angegebenen byte-string nicht inklusive null-terminator;sizeof
: Gibt die Länge des angegebenen byte-string, der null-terminator;InformationsquelleAutor der Antwort billz
strlen
zählt die Elemente bis zum erreichen des null-Zeichens, in dem Fall wird es aufhören, zu zählen. Es nicht mit der Länge.InformationsquelleAutor der Antwort 0x499602D2
strlen()
zählt nicht die Anzahl der Zeichen in dem array (in der Tat, dies vielleicht nicht einmal erkennbar ist (wenn du nur einen Zeiger auf den Speicher, statt ein array). Tut es, als Sie herausgefunden haben, zählen Sie die Anzahl der Zeichen bis zu aber nicht einschließlich der null-Zeichen. Betrachtenchar s[] = {'h','i','\0','t','h','e','r','e'};
InformationsquelleAutor der Antwort Chris Hartman
Ist es 4.
strlen() zählt die Anzahl der Zeichen bis zu, aber nicht einschließlich, dem ersten char mit einem Wert von 0 - nul-terminator.
InformationsquelleAutor der Antwort nos
strlen(const char* ptr)
gibt die Länge der Zeichenfolge durch zählen der nicht-null-Elemente ab, bis er null erreicht. So'\0'
zählt nicht.Ich empfehlen, dass Sie konsultieren die Referenz, wie link für Fragen wie diese.
Es ist klar gesagt wie:
InformationsquelleAutor der Antwort phoeagon