How can I check if char*
variable points to an empty string?
The Java programming language distinguishes between null and empty strings. An empty string is a string instance of zero length, whereas a null string has no value at all. An empty string is represented as "" . It is a character sequence of zero characters.
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.
IsWhiteSpace(String, Int32) Method. This method is used to check whether a character in the specified string at the specified position can be categorized as whitespace or not. It returns True when the character is a whitespace character otherwise it returns False.
An empty char value does not belong to any char, so Java gives a compile-time error. To create an empty char, we either can assign it a null value \0 or default Unicode value \u0000 .
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");
}
My preferred method:
if (*ptr == 0) // empty string
Probably more common:
if (strlen(ptr) == 0) // empty string
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.
if (!*ptr) { /* empty string */}
similarly
if (*ptr) { /* not empty */ }
An empty string has one single null byte. So test if (s[0] == (char)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
Give it a chance:
Try getting string via function gets(string) then check condition as if(string[0] == '\0')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With