26

Possible Duplicate:
What does the \0 symbol mean in a C string?

I am new at iPhone Development. I want to know, what does '\0' means in C, and what is the equivalent for that in objective c.

Community
  • 1
  • 1
Saurabh Jadhav
  • 1,151
  • 3
  • 11
  • 11

7 Answers7

29

The null character '\0' (also null terminator), abbreviated NUL, is a control character with the value zero. Its the same in C and objective C

The character has much more significance in C and it serves as a reserved character used to signify the end of a string,often called a null-terminated string

The length of a C string (an array containing the characters and terminated with a '\0' character) is found by searching for the (first) NUL byte.

sr01853
  • 6,043
  • 1
  • 19
  • 39
11

In C, \0 denotes a character with value zero. The following are identical:

char a = 0;
char b = '\0';

The utility of this escape sequence is greater inside string literals, which are arrays of characters:

char arr[] = "abc\0def\0ghi\0";

(Note that this array has two zero characters at the end, since string literals include a hidden, implicit terminal zero.)

Kerrek SB
  • 464,522
  • 92
  • 875
  • 1,084
6

The '\0' inside character literals and string literals stands for the character with the code zero. The meaning in C and in Objective C is identical.

To illustrate, you can use \0 in an array initializer to construct an array equivalent to a null-terminated string:

char str1[] = "Hello";
char str2[] = {'H', 'e', 'l', 'l', 'o', '\0'};

In general, you can use \ooo to represent an ASCII character in octal notation, where os stand for up to three octal digits.

Sergey Kalinichenko
  • 714,442
  • 84
  • 1,110
  • 1,523
  • ... or `'\xXY'` for hexadecimal. Not sure how that is a "generalization" of `'\0'` though, they're different concepts. – unwind Jan 22 '13 at 15:20
  • @unwind `\0` is zero in octal notation. [Microsoft's page on escape characters](http://msdn.microsoft.com/en-us/library/h21280bw%28v=vs.80%29.aspx) does not have a specific entry on `\0`, "bundling" it together with other octal character literals. – Sergey Kalinichenko Jan 22 '13 at 15:23
  • 1
    @unwind: note also that `0` is an *octal* integer constant, and is a special case of the fact that in general one can write `0[0-7]*` for an octal integer constant. Not that it makes any difference whether `0` is formally defined to be an octal vs decimal constant, but as it happens the grammar classifies it as octal, as it does the `\0` escape :-) – Steve Jessop Jan 22 '13 at 15:46
6

To the C language, '\0' means exactly the same thing as the integer constant 0 (same value zero, same type int).

To someone reading the code, writing '\0' suggests that you're planning to use this particular zero as a character.

Steve Jessop
  • 273,490
  • 39
  • 460
  • 699
3

\0 is zero character. In C it is mostly used to indicate the termination of a character string. Of course it is a regular character and may be used as such but this is rarely the case.

The simpler versions of the built-in string manipulation functions in C require that your string is null-terminated(or ends with \0).

Ivaylo Strandjev
  • 69,226
  • 18
  • 123
  • 176
  • to add it in a string (in Objective C) what should i do... – Saurabh Jadhav Jan 22 '13 at 15:11
  • @SaurabhJadhav it seems the usage in `Objective-C` is similar to the one in `C`. Also have a look [here](http://stackoverflow.com/questions/2111766/how-to-use-null-character-with-nsstring) – Ivaylo Strandjev Jan 22 '13 at 15:13
  • i have looked at the link you gave it to me but i want it another way for eg. in objective c NSString * str = @"A\0B\0C"; so i want the output as followed A B C..ie i want escape that \0 from the string.. – Saurabh Jadhav Jan 23 '13 at 12:25
  • If you want such output, you need to replace `'\0'` with a space character. I believe you can do this using a single iteration(I am not sure if there is a built-in function in `Objective-C` to do that) – Ivaylo Strandjev Jan 23 '13 at 12:44
0

In C \0 is a character literal constant store into an int data type that represent the character with value of 0.

Since Objective-C is a strict superset of C this constant is retained.

Jack
  • 131,802
  • 30
  • 241
  • 343
-4

It means '\0' is a NULL character in C, don't know about Objective-C but its probably the same.

ProfessionalAmateur
  • 4,447
  • 9
  • 46
  • 63