| 1) В UNIX перевод строки осуществляется символом \n, в Windows для этого к переводу строки следует добавить возврат каретки \r\n. Зачем это сделали никто толком объяснить не может, как в прочем и зачем в Windows для разделения директорий по умолчанию используется обратный слеш \ вместо прямого /. Поэтому если в UNIX-подобной системе открыть файл созданный в Windows он весь обезображен символами \r - если их убрать в блокноте всё сольётся в одну строку, не смотря на то, что строки будут разделены \n. Радует, что другие редакторы нормально обрабатывают \n без \r, и из-за того, что подавляющее большинство человек работают под windows и реально проблемы из-за этих разночтений редко бывают. Хотя следует помнить, что если данные пришили с windows-машины - строки разделены \r\n, а если файл создан PHP, то \n. В файловых вариантах Web-приложений при поиске бывает много подводных камней в связи с этим...
2) В С строки это не строки, а массивы символов, последний элемент в которых является нуль-байтом. Поэтому там легко вылезти за границу строки (на этом основано ряд атак по переполнению буффера, когда в строку дописывается бинарный код который размещается после границы массива и изменяет бинарную логику приложения (например Web-сервера), но для их реализации нужно уметь виртуозно программировать). В PHP это не так актуально - здесь строка резиновая, с увеличением размера содержимого она автоматически увеличивается в размере. В С об этом нужно заботится самостоятельно. Например, мы выделяем под строку 200 байт, а содержимое стоки занимает 10, для того, чтобы сообщить что в строке только 10 байт мы в 11 записываем нуль-байт... Очень удобно обрезать строку - достаточно просто записать нуль-байт в середине строки и она автоматически укорачивается...
3) Это просто ASCII-символ (11 по счёту) - видимые симоволы начинаются с пробела (32 символ), а до этого полно управлющих символов, в том числе перевод строки \n (10 симовол), возврат каретки \r (13 символ) и много всякой другой бяки, которая исользовалась ранее и частично используется в настоящее время. Они просто так называются, разумеется большинство редакторов вертикальную табуляцию не поддерживают - ну зачем она нужна, когда можно поставить несколько пробелов, но можно и обработать - например, встретив такой символ делать перевод в три строки, только ни один программист этого делать сейчас не будет так как это будет пугать пользователей. | |