Что такое символ новой строки в языке C: r или n?

Что такое символ новой строки в C? Я знаю, что разные ОС имеют разные символы конца строки, но они переведены с символом новой строки. Что это за персонаж?

4 ответов


Это \n. Когда вы читаете или пишете файлы текстового режима или stdin / stdout и т. д., Вы должны использовать \n, и C будет обрабатывать перевод. Когда вы имеете дело с двоичными файлами, по определению вы сами по себе.


можно подумать о новой строке некоторые char и имеет значение '\n'. C11 5.2.1

эта новая строка C появляется в 3 местах: исходный код C, как один char и как конец строки в файле ввода-вывода, когда в текст режим.

  1. многие компиляторы будут рассматривать исходный текст как ASCII. В этом случае коды 10, иногда 13, а иногда в паре 13,10 в качестве новой строки для исходного кода. Был ли исходный код в другой набор символов, другие коды могут быть использованы. Эта новая строка обычно отмечает конец строки исходного кода (на самом деле здесь немного сложнее), // comment и # directives.

  2. в исходном коде, 2 символа текста \n представляют char новая-линия. Если используется ASCII, это char будет иметь значение 10.

  3. в файле ввода-вывода,в текстовом режиме, при чтении байтов входного файла (и stdin), в зависимости от окружающей среды, когда байты со значением(АМИ) 10 (Unix), 13,10, (*1) (Windows), 13 (Старый Mac??) и другие варианты переводятся в '\n'. При записи файла (или stdout) происходит обратный перевод.
    Примечание: файл ввода-вывода в двоичном режиме не делает перевода.

на '\r' в исходном коде-возврат каретки char.

(*1) одинокий 13 и/или 10 могут также перевести в \n.


Если вы имеете в виду строку с символ это \n и \r - это символ возврата носителя, но если вы подразумеваете под новой строкой окончание строки, то это зависит от операционной системы: DOS использует возврат каретки и подачу строки ( "\r\n") в качестве окончания строки, которое Unix использует только line feed ( "\n")


'\r '= возврат каретки, '\n ' = подача строки, на самом деле есть несколько разных поведений, когда вы используете их в разных ОС.В Unix это "\n", но это "\r "\n " в Windows.Надеюсь, это вам поможет.