Chinaunix首页 | 论坛 | 博客
  • 博客访问: 299990
  • 博文数量: 70
  • 博客积分: 1990
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-02 08:52
文章分类

全部博文(70)

文章存档

2015年(2)

2014年(9)

2013年(2)

2012年(20)

2011年(1)

2010年(36)

分类: C/C++

2012-03-31 22:15:35

源码:

#define _GNU_SOURCE

#include

#include

 

int main()

{

       char *pm = NULL;

       size_t len = 0;

       ssize_t read;

      

       while(printf("Magic input:") && (read = getline(&pm, &len, stdin)) != -1 )

       {

              printf("Magic ouput:");

              fputs(pm, stdout);

              printf("len:%zu\n\n",read);

       }

      

       return 0;

}

 

运行效果:
 

编程小结:

getline

getline函数可以从文件中读取一行字符,放入字符数组中。

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

**lineptr为指向字符存放地址的指针,字符存放地址可以为NULL,即定义*pp = NULL,lineptr=&pp即可;

*n为行字符数目的指针,定义int len,n=&len即可取得行字符数目。

返回值:成功:返回读取的不包含'\0'结束符的字符数目,失败则返回-1(读到文件尾也会返回-1)

使用方法:

头文件

#define _GNU_SOURCE

#include

#include

 

 

例子:无限制行输入

#define _GNU_SOURCE

#include

#include

int main()

{

       char *pm = NULL;

       size_t len = 0;

       ssize_t read;

      

       while(printf("Magic input:") && (read = getline(&pm, &len, stdin)) != -1 )

       {

              printf("Magic ouput:");

              fputs(pm, stdout);

              printf("\n");

       }

      

       return 0;

}

阅读(1300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~