hansen@pegasus.UUCP (02/03/84)
Is "Hello\0, world." a string, or is it two strings? Put another way, is '\0' a legal character to embed within a string? I'd say that all depends on how you define a 'string'. K&R (page 181) defines: A string is a sequence of characters surrounded by double quotes, as in "...". A string has type "array of characters" ... and is initialized with the given characters. ... The compiler places a null byte \0 at the end of each string so that programs which scan the string can find its end. By this definition "Hello\0, world." is a perfectly valid single string and has a length of 15 characters. However, if I look in my UNIX manual (System V) under string(3), I see: The arguments s1, s2 and s point to strings (arrays of characters terminated by a null character). By this definition, "Hello\0, world." is also a perfectly valid string, but this time has a length of only 6 because the null character has terminated it there. It all depends on your context as to what you want to consider it as. In this example, char string[] = "Hello\0, world."; write(1,string,strlen(string)); write(1,string,sizeof(string)); the two writes won't produce the same answer. In most PRACTICAL cases, it will. In either case, it is still a single string. Tony Hansen pegasus!hansen AT&T-IS