相关疑难解决方法(0)

c中对'getline'的未定义引用

我正在学习在C编程中使用getline,并尝试了http://crasseux.com/books/ctutorial/getline.html中的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int atgc, char *argv[])
{
    int bytes_read = 1;
    int nbytes = 10;
    char *my_string;

    my_string = (char *)malloc(nbytes+1);

    puts("Please enter a line of text");

    bytes_read = getline(&my_string, &nbytes, stdin);

    if (bytes_read == -1)
    {
        puts ("ERROR!");
    }
    else
    {
        puts ("You typed:");
        puts (my_string);
    }

    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

但是,问题是编译器不断返回错误:未定义的引用'getline'.你能告诉我问题是什么吗?谢谢!

我使用的是Win7 64bit + Eclipse Indigo + MinGW

c reference undefined getline mingw32

15
推荐指数
3
解决办法
3万
查看次数

是否有GNU getline接口的替代实现?

我目前正在进行的实验使用的软件库具有复杂的源历史记录,并且没有明确定义的许可证.合理化事物并在固定许可下发布将是一项相当大的工作.

它也打算运行一个随机的unixish平台,只有我们支持的一些libc有GNU getline,但现在代码期望它.

有没有人知道在限制较少的许可下可以重新实现GNUgetline语义?

编辑::我问,因为谷歌没有帮助,我想尽可能避免写一个(这可能是一个有趣的练习,但它不能最好地利用我的时间.)

更具体地说,有问题的界面是:

ssize_t getline (char **lineptr, size_t *n, FILE *stream);
Run Code Online (Sandbox Code Playgroud)

c licensing getline

11
推荐指数
3
解决办法
2万
查看次数

为什么fgets函数已被弃用?

来自GNU C编程教程:

该fgets("文件中获取字符串")功能类似于获取功能.这个函数已被弃用 - 这意味着它已经过时,强烈建议你不要使用它 - 因为它很危险.这很危险,因为如果输入数据包含空字符,则无法分辨.fgets除非您知道数据不能包含null,否则请勿使用.不要使用它来读取用户编辑的文件,因为如果用户插入空字符,您应该正确处理它或打印清晰的错误消息.如果可以,请始终使用 getline或getdelim代替fgets.

我觉得这个fgets功能在遇到a \0或者时会停止\n; 为什么当fgets应该正确处理输入时,这个手册页建议空字节是"危险的" ?此外,之间有什么区别getline和fgets,是fgets真正视为功能过时的C99或将来的C标准?

c file-io gnu c99 buffer-overflow

8
推荐指数
2
解决办法
1万
查看次数

使用fgets从c中的stdin读取未知长度行

我试图使用C语言从stdin读取未知长度行.

我在网上看到了这个:

char** str;
gets(&str);
Run Code Online (Sandbox Code Playgroud)

但它似乎给我带来了一些问题,我真的不明白如何以这种方式做到这一点.

你能解释一下为什么这个例子工作/不工作以及实现它的正确方法(用malloc吗?)

c

3
推荐指数
1
解决办法
5794
查看次数

如何从此文本列表中取出第一行?

我有一个包含文本的列列表,但我只是从这个列表中获取第一行。怎么做?

#include <stdio.h>

int main()
{
  FILE *fr;
  char c;
  fr = fopen("prog.txt", "r");
  while( c != EOF)
  {
    c = fgetc(fr); /* read from file*/
    printf("%c",c); /*  display on screen*/
  }
  fclose(fr);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c function eof file-read

1
推荐指数
1
解决办法
112
查看次数