LINUX.ORG.RU
ФорумTalks

баг fgets


0

0

При чтении файла, состоящего из 1 строки (в конце нет перевода строки), fgets все равно добавляет в конец '\n', хотя в мане написано:
   ...
   If a newline is read, it is stored into the  buffer.
   ...
Но newline'а  в файле нет!
anonymous

Ответ на: Re: баг fgets от stassats

Re: баг fgets

$ cat test.c
#include <stdio.h>
#include <stdlib.h>

#define BS 512

int main(int argc,char** argv)
{
        FILE* fh=fopen("trash","r");
        char buf[BS];
        fgets(buf,BS,fh);
        printf("%s;\n",buf);
        fclose(fh);
        exit(0);
}

$ cat trash
abc
$ gcc test.c
$ ./a.out
abc
;

Между действительными символами строки из файла и ';' вставлен перевод.

anonymous ()
Ответ на: Re: баг fgets от anonymous

Re: баг fgets

Если бы там не было '\n' на конце, то вгляделы бы так:

$ cat trash abc$

Так что он там есть, чтоб не было:

$echo -n "abc">trash

stassats ★★★★ ()
Ответ на: Re: баг fgets от stassats

Re: баг fgets

Еле нашел, значит так:

:set noeol

:set bin

и обязательно вместе, по отдельности не работают.

stassats ★★★★ ()
Ответ на: Re: баг fgets от stassats

Re: баг fgets

Спасибо за команды.
P.S. Все, перехожу на emacs, запарил этот идиотский vim.

anonymous ()
Ответ на: Re: баг fgets от anonymous

Re: баг fgets

Ну не надо так грубо :(

stassats ★★★★ ()
Ответ на: Re: баг fgets от anonymous

Re: баг fgets

правильно, давай к нам, только непременно купи педали к клаве, у нас ведь всего 10 пальцев

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.