[PERL] каким символом обозначается конец файла?
Конец файла ОС-зависим.
В широкораспространённых ОС он не обозначается никак.
---
...Я работаю антинаучным аферистом...
Не поняла. Все равно должено быть по-моему какой-то символ, кот можно записать в любое место файла так, что потом это уже будет считаться конец файла. Если этот символ ОС-зависим, то какой он в Unixe? Если и тут я не права, то как мне просто укоротить файл? Как-то должно быть можно!
Конец файла в Un*x-системах обычно обозначается через Ctrl-D.
А как этот CTRL-D в прогу вписать? Прям так и писать?
должен быть по-моему какой-то символ, кот можно записать в любое место файла так, что потом это уже будет считаться конец файла
Конечно не должно быть такого символа , иначе как бинарные данные в файл записывать? , придется защищаться от присутствия в них этого символа, фигня какая-то вобщем. Просто ОС хранит длину файла где-то в другом месте, вот и все...
А '\x0' == 0, обозначает в С конец строки.
Для этого есть спец. тип файлов.
По умолчанию там текстовая обработка
См., например, read(3).
Файл лучше открыть сразу с усечением: O_TRUNC.
---
...Я работаю антинаучным аферистом...
^D = EM (End of Medium).
---
...Я работаю антинаучным аферистом...
то попробуй найти функцию truncate(2).
---
...Я работаю антинаучным аферистом...
Вот есть например файл text.txt - "hello, world!". Как его открыть в Перле, сделать "hello," и закрыть?
Кажется, пашет!
Всё.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
Karel Capek
а в Unix конец файла как и конец строки \0
а в Си есть.... ЕОF называется.
bash-2.05b# grep EOF /usr/include/stdio.h
#define __SEOF 0x0020 /* found EOF */
#define EOF (-1)
#define SEEK_END 2 /* set file offset to EOF plus offset */
#define __sfeof(p) p)->_flags & __SEOF) != 0)
#define __sclearerr(p) voidp)->_flags &= ~(__SERR|__SEOF
SCANF(3) FreeBSD Library Functions Manual SCANF(3)
NAME
scanf, fscanf, sscanf, vscanf, vsscanf, vfscanf -- input format conver-
sion
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdio.h>
int
scanf(const char * restrict format, ...);
RETURN VALUES
These functions return the number of input items assigned, which can be
fewer than provided for, or even zero, in the event of a matching fail-
ure. Zero indicates that, while there was input available, no conver-
sions were assigned; typically this is due to an invalid input character,
such as an alphabetic character for a `%d' conversion. The value EOF is
returned if an input failure occurs before any conversion such as an end-
of-file occurs. If an error or end-of-file occurs after conversion has
begun, the number of conversions which were successfully completed is
returned.
Da capo.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
Karel Capek.
Оставить комментарий
krasikovroman
Подскажите, кто знает, каким символом обозначается конец файла в Перле?В С это по-моему что-то вроде \х0.
Спасибо!