2016-12-01 3 views
0

Я создаю программу, которая читает содержимое текстового файла через командную строку, символ по символу.NULL Terminator в текстовых файлах

Является ли значение NULL вставленным автоматически или нужно добавить его в текстовый файл вручную?

+0

Вместо NULL вы можете просто использовать EOF, что означает конец файла, и он вставлен автоматически. [http://stackoverflow.com/questions/1782080/what-is-eof-in-the-c-programming-language] – klancar16

+0

'NULL' - это макрос с постоянной константой указателя _. В текстовых файлах нет символа «NULL» или константы нулевого указателя. Неясно, что вы имеете в виду. См. [Ask] и добавьте дополнительную информацию на свой вопрос, включая ваш код. – Olaf

ответ

1

Текст файлам не требуется терминатор на современных платформах. (На некоторых устаревших платформах у них был один, но я сомневаюсь, что это так.) Вы почти наверняка не должны писать терминатор в файл, так как это может вызвать проблемы с программами, которые этого не ожидают. Конец файла служит в качестве ограничителя при чтении.

Текст строки в C являются массивами символов, прерываемых ноль, он же нулевой символ, мнемонические NUL (с одним L, и это не то же самое, как NULL в C). При создании строк вы должны их закончить правильно. Функции, возвращающие строки, в том числе те, которые читают их из файлов (например, fgets), завершают их для вас.

+0

@Norman, что устаревший терминатор * в текстовом файле * не был 'NULL', но, например,' Ctrl-Z' или '0x1A'. –

+0

@WeatherVane Да, я знаю, поэтому я не указал нулевой терминатор, а просто «терминатор». Во всяком случае, я не думаю, что это имеет отношение к вопросу, просто немного мелочей. =) – Arkku

+0

Извините, примечание было для OP, который спросил: «Значение NULL автоматически вставлено или мне нужно добавить его в текстовый файл вручную», поэтому, возможно, это относится к вопросу. –