linux c getline
linux c getline
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
int main()
{
FILE *fp;
char *str;
size_t str_size=0;
string file_path = "/home/amazing/change";
fp = fopen(file_path.c_str(), "r");
if(fp!=NULL)
{
size_t read_size = 0;
// 这里的getline需要传入一个字符串的指针,传入一个size_t的值的指针,还有一个你需要读取的文件的指针
// 字符串指针,由getline函数来帮你维护,他会帮你申请内存,你不需要事先申请内存,
// size_t保存了getline帮你申请了多少内存,你可以,读取这个数值查看str现在被分配了多少字节
// 最后结束时就需要你自己将str的内存free掉,不管到底getline成功读取没有都要去free
while((read_size=getline(&str, &str_size, fp))!=-1)
{
printf("%s\n", str);
}
free(str);
}
fclose(fp);
return 0;
}