[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: getline



On Wed, Apr 28, 2004 at 06:18:59PM +0700, php-coder wrote:
>   --- quest.c ---
>   #include <stdio.h>
>   #include <stdlib.h>
>   int main(int argc, char **argv)
>   {
>    void func()
>         {
>          char *p;
>          size_t n=30;
>          p=(char *)malloc(n);
>          getline(p, &n, stdin);
>          printf("Вы ввели: %s\n", *p);
>          free(p);
>         }
>    func();
>    return 0;
>   }
>   --- E O F ---
> 
>   Компилирую:
> 
>   [coder@experiment test2]$ gcc quest.c -o quest -g -Wall -ansi -pedantic
>   quest.c: In function `main':
>   quest.c:6: warning: ANSI C forbids nested functions
>   quest.c: In function `func':
>   quest.c:10: warning: implicit declaration of function `getline'
>   quest.c:11: warning: format argument is not a pointer (arg 2)
>   
>   Почему он жалуется на то, что не объявлена ф-ция, если она в stdio.h
>   должна быть


Её не должно быть в stdio.h. Это GNU-extension. Ты забыл сделать

#define _GNU_SOURCE

К тому же у тебя ошибка: и первый, и второй аргументы --- это возвращаемые
значения, поэтому они являются указателями. Надо сделать так:

getline(&p, &n, stdin);

> и что ему не нравится во втором аргументе?

Тут тоже ошибка:

printf("Вы ввели: %s\n", p);


-- 
Andrey V. Kiselev
Home phone:  +7 812 5274898  ICQ# 26871517



Reply to: