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.