4 ms·
Null terminated strings are just application level logic. "strings" are just bytes in memory. There are no strings.
by bobsc123 9y ago
Null terminated strings are just application level logic. "strings" are just bytes in memory. There are no strings.
- roywiggins 9y ago> Should the C language represent strings as an address + length tuple or just as the address with a magic character (NUL) marking the end? This explicitly is a different kind of representation in memory.
- callesgg 9y agoNo, If you quote a string in c "string data here" you get a piece of data with null termination. Null termination is part of the C language. Example: char str[]= "1234"; printf ("%s: %lu", str, sizeof(str)); Prints: 1234: 5
- _kst_ 9y agoUse "%zu" to print a value of type size_t. A couple of ugly corner cases: const char str[] = "abcd\0efgh"; printf("length = %zu, size = %zu, value = \"%s\"\n", strlen(str), sizeof str, str); output: length = 4, size = 10, value = "abcd" And: const char str[4] = "abcd"; printf("length = %zu, size = %zu, value = \"%s\"\n", strlen(str), sizeof str, str); This has undefined behavior. (Which is a good reason to let the compiler figure out how big the array has to be. Computers are better at counting things than you are. Let them.)