Which of the following are null-terminated string?
char *str1 = \"This is a string.\";
char *str2 = \"This is a string.\\0\";
char str3[] = \"This is a strin
Don't use char*s="hi"
in case you want to do something with the string like modifying it or even if you want to concatenate something to it because here stringhi
is in read only section of the memory and your program can crash
All. C compiler auto aggregates string with a terminate '\0', then store it in a char[] or refer to it by char *;
They are all null-terminated (str2
and str5
are actually doubly-null-terminated) because using double quotes is a shorthand for a null-terminated char array.
So this:
"Hello"
Is actually this:
{'H', 'e', 'l', 'l', 'o', '\0'}
Variables pointing to string literals such as these should be declared as const
.
str2
and str5
have the particularity of being doubly null-terminated stringsAlso :
char *str1
should be const char *str1
char *str2
should be const char *str2