Я пытаюсь прочитать строку из файла и вернуть указатель на начало следующей строки, но я не понимаю, что происходит с fd, когда я использую его для чтения 10 символов за раз. Я могу использовать только чтение, запись, открытие и mallo c.
Пример file.txt (с явным указанием \n
):
Sphinx of black quartz, judge my vow.\n
Pack my box with five dozen liquor jugs.\n
The quick brown fox jumps over the lazy dog.\n
main. c:
int fd = open("file.txt", O_RDONLY);
int fd2 = open("oneline.txt", O_CREAT | O_WRONLY);
char *buffer = (char *)malloc(sizeof(char) * 10);
read(fd, buffer, 10);
write(fd2, &buffer, 10);
1) Будет fd
теперь указывать на 11-й символ file.txt
и fd2
в EOF для oneline.txt
?
Продолжение main. c пример:
int newline = 0, found = 0;
while(found == 0)
{
read(fd, buffer, 10);
for(int i = 0; buffer[i] != '\n' || i < 10; i++)
{
newline++;
if(buffer[i] == '\n')
found = 1;
}
}
Если fd
указывает на 41-й символ в file.txt
( в то время как l oop запускается 4 раза, а '\ n' - 38-й символ). Значение для целого числа newline
равно 38.
2) Как я могу заставить fd указывать на 39-й символ, который следует сразу после символа '\ n'?