【发布时间】:2013-08-16 16:32:18
【问题描述】:
我有一个执行以下操作的函数:
ssize_t headache(char **lineptr, size_t *n, FILE * stream)
{
if(lineptr != NULL)
{
free(*lineptr);
}
size_t len = 0,
last = 0;
char * buf = NULL;
int c;
do
{
last = len;
++len;
buf = realloc(buf,len);
c = fgetc(stream);
buf[last] = (char)c;
printf("%i\t%x\t%c\n", last, buf[last], buf[last]);
}
while(!feof(stream) || c != '\n');
*n = strlen(buf);
*lineptr = buf;
return len;
}
头痛总是被称为头痛(&lineptr,&n,stream)
char * lineptr = NULL;
size_t n = 0;
FILE * stream;
do{}while();循环永远不会确认换行符或 EOF,这意味着它将无限继续。我不明白为什么它忽略 EOF 和 '\n'。谁能告诉我我做错了什么?
【问题讨论】: