Check if the first character is '\0'. You should also probably check if your pointer is NULL.
char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
printf("c is empty\n");
}
You could put both of those checks in a function to make it convenient and easy to reuse.
Edit: In the if statement can be read like this, "If c is not zero and the first character of character array 'c' is not '\0' or zero, then...".
The &&
simply combines the two conditions. It is basically like saying this:
if (c != NULL) { /* AND (or &&) */
if (c[0] == '\0') {
printf("c is empty\n");
}
}
You may want to get a good C programming book if that is not clear to you. I could recommend a book called "The C Programming Language".
The shortest version equivalent to the above would be:
if (c && !c[0]) {
printf("c is empty\n");
}
An empty string has one single null byte. So test if (s[0] == (char)0)
Check the pointer for NULL
and then using strlen
to see if it returns 0
.
NULL
check is important because passing NULL
pointer to strlen
invokes an Undefined Behavior.
My preferred method:
if (*ptr == 0) // empty string
Probably more common:
if (strlen(ptr) == 0) // empty string
if (!*ptr) { /* empty string */}
similarly
if (*ptr) { /* not empty */ }
Give it a chance:
Try getting string via function gets(string) then check condition as if(string[0] == '\0')
I would prefer to use the strlen function as library functions are implemented in the best way.
So, I would write if(strlen(p)==0) //Empty string
Source: Stackoverflow.com