Der beste Weg, um zu überprüfen, ob ein Zeichen-Array leer ist
Welches ist der zuverlässigste Weg, um zu überprüfen, ob ein Zeichen-array leer ist?
char text[50];
if(strlen(text) == 0) {}
oder
if(text[0] == '\0') {}
oder muss ich tun,
memset(text, 0, sizeof(text));
if(strlen(text) == 0) {}
Was ist der effizienteste Weg zu gehen über diese?
InformationsquelleAutor der Frage ZPS | 2009-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angesichts dieser code:
Gefolgt von einer Frage zu diesem code:
Ich rieche Verwirrung. Speziell in diesem Fall:
... der Inhalt
text[]
wird nicht initialisiert und nicht definiert. Sostrlen(text)
zurück ein Undefiniertes Ergebnis.Den einfachsten/schnellsten Weg, um sicherzustellen, dass ein C-string initialisiert wird der leere string ist einfach das erste byte auf 0.
Dann beide
strlen(text)
- und das sehr-schnell-aber-nicht-wie-einfach(text[0] == 0)
tests werden beide erkennen, der leere string.InformationsquelleAutor der Antwort bbum
Hängt davon ab, ob oder nicht Sie Ihr array mit einem null-terminierten string. Wenn dem so ist, dann
sollte ausreichend sein.
Edit: eine Andere Methode wäre...
ist möglicherweise weniger effizient, aber deutlich äußert Eure Absicht.
InformationsquelleAutor der Antwort Parappa
Dieser Arbeit zu finden, wenn ein Zeichen-array leer ist. Es ist wahrscheinlich auch die Schnellste.
Diese wird auch schnell sein, wenn die
text
- array leer ist. Wenn es Zeichen enthält, muss es zählen alle Zeichen, die in das erste.InformationsquelleAutor der Antwort Peter Stuifzand
Die zweite Methode wäre mit ziemlicher Sicherheit der Schnellste Weg, um zu testen, ob eine null-terminierte Zeichenfolge leer ist, da es sich um einen lese-und einen-Vergleich. Es gibt sicherlich nichts falsch mit diesem Ansatz in diesem Fall, so können Sie es verwenden.
Die Dritte Methode nicht überprüfen, ob ein Zeichen-array ist leer; es sorgt dafür, dass ein Zeichen-array leer ist.
InformationsquelleAutor der Antwort James McNellis
Die zweite ist am schnellsten. Mit
strlen
Nähe wenn der string ist in der Tat leer, aberstrlen
wird immer Durchlaufen und jedes Zeichen des Strings, also wenn es so ist nicht leer, es wird viel mehr Arbeit, als Sie es benötigen.Als James erwähnt, ist die Dritte option, wischt sich den string aus, bevor Sie die Prüfung, so dass die überprüfung immer erfolgreich, aber es wird bedeutungslos sein.
InformationsquelleAutor der Antwort Graeme Perrow
verwenden Sie diese
wenn Ihre Programmierung für mikrocontroller mit wenig Platz auf dem flash und ram, werden Sie verschwenden viel mehr flash mit strlen, als mit der überprüfung des ersten byte.
das obige ist der Schnellste war mit weniger Berechnung als gut.
InformationsquelleAutor der Antwort Tony