Best way to check if a character array is empty
Which is the most reliable way to check if a character array is empty?
char text[50];
if(strlen(text) == 0) {}
or
if(text[0] == '\0') {}
or do i need to do
memset(text, 0, sizeof(text));
if(strlen(text) == 0) {}
Whats the most efficient way to go about this?
Solution 1:
Given this code:
char text[50];
if(strlen(text) == 0) {}
Followed by a question about this code:
memset(text, 0, sizeof(text));
if(strlen(text) == 0) {}
I smell confusion. Specifically, in this case:
char text[50];
if(strlen(text) == 0) {}
... the contents of text[]
will be uninitialized and undefined. Thus, strlen(text)
will return an undefined result.
The easiest/fastest way to ensure that a C string is initialized to the empty string is to simply set the first byte to 0.
char text[50];
text[0] = 0;
From then, both strlen(text)
and the very-fast-but-not-as-straightforward (text[0] == 0)
tests will both detect the empty string.
Solution 2:
Depends on whether or not your array is holding a null-terminated string. If so, then
if(text[0] == '\0') {}
should be sufficient.
Edit: Another method would be...
if (strcmp(text, "") == 0)
which is potentially less efficient but clearly expresses your intent.