c - titel - title tag länge 2018




Wie kann ich überprüfen, ob char*Variable auf eine leere Zeichenfolge zeigt? (5)

Wie kann ich überprüfen, ob char* Variable auf eine leere Zeichenfolge zeigt?


Überprüfen Sie den Zeiger für NULL und verwenden Sie dann strlen zu sehen, ob es 0 zurückgibt.
NULL Prüfung ist wichtig, da die Übergabe eines NULL Zeigers an strlen ein strlen Behavior aufruft.


Überprüfen Sie, ob das erste Zeichen '\ 0' ist. Sie sollten auch prüfen, ob Ihr Zeiger NULL ist.

char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
   printf("c is empty\n");
}

Sie können diese beiden Überprüfungen in einer Funktion ablegen, um sie bequem und einfach wiederverwenden zu können.

Edit: In der if-Anweisung kann so gelesen werden: "Wenn c nicht Null ist und das erste Zeichen des Zeichenarrays 'c' nicht '\ 0' oder Null ist, dann ...".

Das && kombiniert einfach die beiden Bedingungen. Es ist im Grunde wie das zu sagen:

if (c != NULL) { /* AND (or &&) */
    if (c[0] == '\0') {
        printf("c is empty\n");
    }
}

Vielleicht möchten Sie ein gutes C-Programmierbuch bekommen, wenn Ihnen das nicht klar ist. Ich könnte ein Buch mit dem Titel "Die Programmiersprache C" empfehlen.

Die kürzeste Version, die der obigen entspricht, wäre:

if (c && !c[0]) {
  printf("c is empty\n");
}

Gib es eine Chance:

Versuchen Sie, die Zeichenfolge über die Funktion gets (string) abzurufen, und überprüfen Sie die Bedingung wie folgt (string [0] == '\ 0')


Ich würde es vorziehen, die Strlen-Funktion zu verwenden, da Bibliotheksfunktionen auf die beste Weise implementiert werden.

Also würde ich schreiben, wenn (strlen (p) == 0) // Leere Zeichenfolge


if (!*ptr) { /* empty string  */}

ähnlich

if (*ptr)  { /* not empty */ }






char