汉扬编程 编程大纲 20万程序员了解过的C/C++逐行读取文本文件的数据

20万程序员了解过的C/C++逐行读取文本文件的数据

C++:

20万程序员了解过的C/C++逐行读取文本文件的数据

函数声明:

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

成功,则返回(有符号整型)每行的字节数,包含结束符;否则返回-1

例子:

#include<iostream>

#include<stdio.h>

#include<unistd.h>

#include<dirent.h>

#include<stdlib.h>

#include<errno.h>

#include<malloc.h>

usingnamespace std;

#define FILE_PATH \”/home/tmp/test/test.txt\”

#define BUFF_LEN 256

int main()

{

FILE *fp = NULL;

char *file = FILE_PATH;

char *line = NULL;

size_t line_len = BUFF_LEN;

int len = 0;

if( (0!=access(file,R_OK|F_OK)) || (NULL==(fp=fopen(file,\”r\”))) )

{

printf(\”open %s failed, errno=%d\\n\”,file,errno);

return -1;

}

while( (len=getline(&line,&line_len,fp))>0 )//逐行读取,如果line为NULL,则系统会自动malloc,所以用完记得free

{

printf(\”the content of each line is:\\n%s\”,line);

printf(\”the length of each line is: %d\\n\\n\”,len);

}

if(fp != NULL)

{

fclose(fp);

fp = NULL;

}

if(line)

{

free(line); //记得释放资源

}

return 0;

}

C语言:

char *fgets(char *buf, int bufsize, FILE *stream);

成功,则返回第一个参数buf;否则返回NULL

例子:

#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

#include<malloc.h>

#define FILE_PATH \”/home/tmp/test/test.txt\”

#define BUFF_LEN 256

int main()

{

FILE *fp = NULL;

char *file = FILE_PATH;

char *line = (char *)malloc(BUFF_LEN * sizeof(char));//和C++不同的是,事先要申请空间,否则报段错误

if( (0 != access(file,R_OK|F_OK)) || (NULL==(fp=fopen(file,\”r\”))) )

{

printf(\”open %s failed\\n\”,file);

return -1;

}

while( fgets(line, BUFF_LEN, fp) != NULL )//逐行读取数据

{

printf(\”the content of each line is:\\n%s\”,line);

}

if(fp!=NULL)

{

fclose(fp);

}

return 0;

}

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/6352.html

二进制、八进制、和十六进制如何转十进制

浅析拼图游戏中的切图核心算法思想,C语言零基础编写小案例

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部