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;
}
文章目录