C读取线function

在大学作业中,建议在练习中使用C语言阅读function。 我已经搜索了它的参考但仍未找到它。 它真的存在吗? 在哪个标题? 您能否发布参考链接?

Readline存在于两个地方, libreadlinelibedit (也称为libeditline )。 两者都有相同的界面。 不同的是libreadline是根据GPL许可的,libedit是BSD的3条款。 许可证实际上并不是作业的关注点,至少我认为不是。 许可证允许您自由使用代码。 如果您链接到readline,请务必使整个程序GPL 2 or later版本满足任何版本的GPL管理系统readline 。 它可能是GPL2 +或GPL3 +,具体取决于系统的使用年限。 我不是在提倡任何许可证,这取决于你。

注意,请注意安装/或根据需要调整链接( -lreadline -ledit -leditline )。 两者都是库,而不是标准C库的一部分。

编辑 (事后补充):

如果将程序发布到野外,它是一个很好的手势,允许用户使用他们选择的readline配置它。 例如: – --with-readline--with-libedit等。这允许二进制包符合他们的许可选择,至少就readline而言。

链接: Readline和Edit / Editline 。

我不认为这是一个标准function。

我简单的实现将是这样的:

  char * Readline(char * in){
    char * cptr;

    if(cptr = fgets(in,MAX_LINE,stdin)){
      / *杀死前面的空格但是留下\ n所以我们保证有东西
      while(* cptr ==''|| * cptr =='\ t'){
        CPTR ++;
      }
     返回cptr;    
     } else {
     返回0;
    }
  } 

它使用fgets()读取MAX_LINE – 1个字符到缓冲区’in’。 它剥离前面的空格并返回指向第一个非空白字符的指针。

它不存在。

他们错了,并从stdio.h引用了gets()。

这也是一个非常不安全的function,因为没有最大的读取参数大小,使其立即安全整体(查找缓冲区溢出攻击)。 您可以使用fgets()代替,如下面的愤怒评论所示。