+ 1
When should I put a '\0' to the end of a string or character array?
And what's '\0' means and used for? I'm confused about it when handling my homework about string.
5 ответов
+ 6
If you use char str[] = "test";, you automatically get 5 characters with '\0' as the last. If you wish to remove the 'e', you could do:
str[1]=str[2];str[2]=str[3];str[3]='\0';
If your string is not terminated with '\0', cout << str; will keep printing until it finds one. However, you can always loop 3 times and print characters so it isn't required.
+ 5
It means the array is a string
+ 2
It’s used to tell the computer thats the end of the string
+ 2
It was so that you could do
for (char* it = str; *it != '\0'; ++it)
+ 2
Side note: This is more of a C than C++ question, still I guess it may have historical significance. By the way, in C++, prefer std::string for strings as you need not worry about null-termination (the '\0', lesson below).
Since nobody mentioned it yet, and OP asked, '\0' is a null (equal to 0). A string ending in '\0' is called a null-terminated string.
Historical value:
In the older days, 0 was all a C function had to tell it had reached the end (preventing overflow) of a string without a user-supplied length. strlen is a good example here: Arrays of char are passed by reference and strlen counts from the start address until it encounters a zero. The value, like a newline, must be escaped, since '0' has an ASCII value of 48. QED:
"ABC0" is 65, 66, 67, 48
"ABC\0" is 65, 66, 67, 0
I was going to get more in-depth, but that should cover it and the time's 00h47 where I live.