LINUX.ORG.RU
ФорумTalks

баг fgets


0

0

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

Ответ на: комментарий от stassats

$ 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
()
Ответ на: комментарий от anonymous

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

$ cat trash abc$

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

$echo -n "abc">trash

stassats ★★★★
()
Ответ на: комментарий от anonymous

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

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