Как возможно, что файлы могут содержать пустые байты в операционных системах, написанных на языке с нулевыми терминами (а именно, C)?
Например, если я запустил этот код оболочки:
$ printf "Hello\00, World!" > test.txt
$ xxd test.txt
0000000: 4865 6c6c 6f00 2c20 576f 726c 6421 Hello., World!
Я вижу нулевой байт в test.txt
(по крайней мере, в OS X). Если C использует нуль-завершающие строки, а OS X записывается на C, то почему файл не заканчивается в нулевом байте, в результате получается файл, содержащий Hello
вместо Hello\00, World!
? Существует ли принципиальное различие между файлами и строками?