можно ли вписать символ #FFFFFF в середину файла и при этом сохранить оставшуюся часть? Или файл оборвётся навечно? ЗЫ.: Я пробывал - чето не выходит. Не найду такой символ.
osrootd #FFFFFF - это типа 3 байта FF подряд? можно, почему нет. В любое место файла можно писать любую последовательность байт.
osrootd Нужно было сразу определится с форматом файла при вопросе, возможно некоторые теги перекрывают записанные данные
Что-то С-подобное, поэтому могу тупить... Не может быть так, что (char)0xffffff вставляется как DWORD, у которого в старшем байте $00 ? Соответственно считается концом строки.
K10 Главный приз в номинации Логика 2008! Я уже понял, спасибо. Это EOF (прочитал мануалы). Только остается вопрос: где остатки от строки? Как пропустить этот код при чтении? Ведь размер файла-то не изменился! И как создать файл с таким набором данных, чтоб его не смог прочитать ни один редактор у которого while (!EOF){...}?
osrootd EOF - это не символ в файле! Это значение (обычно (int)(-1), хотя стандарт на этом не настаивает), которое возвращает, например, функция чтения, когда достигнут конец файла. Если программа правильно организует процесс чтения (т.е. рассматривает EOF как int, а не как char) - тогда проблем никаких не будет. Код (Text): int c; /* int - это важно, если объявить как char, то следущий цикл остановится при чтении байта 0xff */ while ((c = fgetc(f)) != EOF) { /* теперь рассматриваем 'c' как char, все старшие биты будут 0 */ };
meduza Простите, я описался. Имеется в виду, что некоторые проги отказываются читать файл дальше этого символа. Как и заметил K10, данный код должен по идее указывать на конец строки, однако: Firefox: говорит что данных больше нет Kate - (KDE Advanced Text Editor) читает нормально more - только полфайла - данных нет KHex - весь файл, но криво. cat - нормально Печать на принтер - полфайла. Создал файл с таким именем - гыы. Значок есть, размер тоже есть, открыть и удалить - нельзя.
Щас проверил в lynx (Lynx Version 2.8.6rel.5 (09 May 2007), ncurses 5.6.20061217(wide) Built on linux-gnu Jul 14 2008 20:45:29), firefox (Mozilla Firefox 3.0.4), заменив на этой же странице 'EOF' в фразе "у которого while (!EOF){...}?" на 0xfffff - обе проги видят эти байты как 'яяя' - это в кодировке utf8. При выборе в Firefox кодировки UTF-8 тоже всё показывает без пропуска. Подозреваю, что в некоторых программах проблема может быть с режимом чтения - двоичный/текстовый файл.
10110111 Ты чем заменял? Если просто ВСТАВИЛ символ или юзал php, то у тебя там не ffffff, а EFBFBF - посмотри в hex-редакторе увидишь, я прав. Мне чтоб такое сделать с этой страницей, пришлось вообще mayscript заюзать. И формы поисправлять. У тебя ï¿¿ï¿¿ï¿¿ это на конце? Не верно.
я вставлял через vi+xxd, в хекс-едиторе всё как надо (у тебя винда или линь? чёт я подумал, что раз Kate, значит, наверно линь?)
Firefox предлагает сохранить этот файл, обосновывая это тем, что файл бинарный. Kate нормально открывает (f-ки квадратиками), но предупреждает, что не будет сохранять его. Lynx выводит , т.е. ï¿¿ï¿¿ï¿¿ не в конце, а в середине. more нормально выводит как через more fff*, так и через cat fff* |more.
У меня more не читает, а cat читает, ну я уже говорил. Вывод: Завтра проверю на мандриве. Кстати, у тебя more весь файл выводит? cgi-bin заюзать пробывал?
more всё выводит любыми способами, печать тоже весь файл. Не знаю, что это такое, так что не пробовал... Какие у тя настройки локали? у меня так: