Написал две функции: отдельно для чтения стандартного ввода и отдельно для чтения файла...
char *freadline(FILE * fp)
{
char *s,*f;
int len;
s=fgetln(fp, &len);
if (s==NULL) return NULL;
if (s[len-1]=='\n') len--;
f=(char*)malloc(len+1);
strncpy(f,s,len);
f[len]='\0';
return f;
}
char *readline()
{
char *s,*f;
int len;
s=fgetln(stdin, &len);
if (s==NULL) return NULL;
if (s[len-1]=='\n') len--;
f=(char*)malloc(len+1);
strncpy(f,s,len);
f[len]='\0';
return f;
}
С чтением stdin никаких проблем. Когда читаю файл... он его сразу весь записывает в память... получается что-то вроде такого:
<...>
141 s=fgetln(fp, &len);
(gdb) n
142 if (s==NULL) return NULL;
(gdb) p s
$1 = 0x804f004 "asdf\nbd:\n10-23-122\n\nnm:\nqwerq\ndb:\n10-21-532\n"
а я хотел по строкам, как это происходит с stdin... в чем разница? чего я не понял?... объясните plz чего да как...
и второе: почему не работает стандартная функция readline();?
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
main() {printf("%s\n",readline("")); return 0;}
:!gcc test.c -o test
/tmp/ccjvdCR5.o(.text+0x28): In function `main':
: undefined reference to `readline'
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от CAT_XP
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от CAT_XP
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Почему код не компилится (2005)
- Форум Массивы указателей K&R (2015)
- Форум K&R Задача 1.16 (2015)
- Форум покритикуйте функцию (2009)
- Форум вопрос про select() (2013)
- Форум Ошибка в коде... (2006)
- Форум ссылки и приведение типов (2010)
- Форум oop в «чистом» си (2005)
- Форум Программа на Си падает, при выделении памяти (2014)
- Форум non-blocking write (2011)