getline()函数是什么?百度百科这样解释:

     getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。
linux标准C中使用条件:
#define _GNU_SOURCE

#include <stdio.h>
函数声明:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
 
返回值
成功:返回读取的字节数。
失败:返回-1。
参数:
lineptr:指向存放该行字符的指针,如果是NULL,则有系统帮助malloc,请在使用完成后free释放。
n:如果是由系统malloc的指针,请填0
stream:文件描述符
 
那我们linux c中如何使用getline()函数呢?
C 有 fgets(), gets() 函数,也有getline.用于读取一行字符直到换行符,包括换行符。这个和我们前面那篇关于标准输入输出函数
流与缓冲区那篇中内容有联系,
printf() scanf() 属于行缓冲,读取一行数据(遇到'\n')便会刷新。
 
我们可以利用getline()一行一行的读取数据.

我的config文件下有这几行数据:

1700003137
1700003137.pem
GUID_file[1700003137001342].txt
licence.sign.file[1700003137001342].txt
#include <stdio.h>
#include <stdlib.h> int main(void)
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
fp = fopen("./data/config", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1)
{//一行一行读,读完一行,直接跳到下一行
// printf("Retrieved line of length %zu :\n", read);
line[read-1]='\0';//将换行符'\n'替换成 '\0'
printf("%s", line);
}
//判断 line 是否为空指针,如果不是需要释放
if (line)
free(line);
exit(EXIT_SUCCESS);
}

运行结果如下:

17000031371700003137.pemGUID_file[1700003137001342].txtlicence.sign.file[1700003137001342].txt


#include <stdio.h>
#include <stdlib.h> int main(void)
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
fp = fopen("./data/config", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1)
{
// printf("Retrieved line of length %zu :\n", read);
// line[read-1]='\0';
printf("%s", line);
}
if (line)
free(line);
exit(EXIT_SUCCESS);
}

运行结果如下:

1700003137
1700003137.pem
GUID_file[1700003137001342].txt
licence.sign.file[1700003137001342].txt

参考:http://blog.csdn.net/zqixiao_09/article/details/50253883





最新文章

  1. (转)C++语言的15个晦涩特性
  2. express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(三)完结篇
  3. Andriod SDK Manager 安装问题解决方法
  4. iOS8后core location框架启动定位服务的步骤
  5. 多线程编程3 - GCD
  6. apache中.htaccess不起作用
  7. eclipse下使用API操作HDFS
  8. ssh连接失败解决方法
  9. c# in depth之泛型的实现
  10. sql点滴40—mysql乱码问题总结
  11. 【Unity与23种设计模式】状态模式(State)
  12. 论Activity及启动模式,Fragment,Service的使用以及生命周期
  13. 在docker上运行.net core程序
  14. 解析key值不确定的json数据
  15. Linux基础之常用命令整理(一)
  16. Docker 简介,入门
  17. 基于Spring Boot的微服务搭建
  18. 转自知乎大神---什么是 JS 原型链?
  19. Linux+Redis实战教程_day03_4、通用redis命令【重点】
  20. #Alpha Scrum6

热门文章

  1. poj1753模拟
  2. 【转】数据库获得当前时间getdate()
  3. python matrix/array反向切片
  4. 元数据(MetaData)
  5. UML类图(二)--------类与类之间的关系之依赖,继承,接口与实现关系
  6. 目标检测 — 计算IOU
  7. hdu2665 主席树(可持久化线段树)
  8. 在OSX上安装python3使用pip安装Flask
  9. vue项目中引入element-ui时,如何更改主题色
  10. OpenCV 2.4.9 +VS2013 开发环境配置