C/C++ 读取文件指定行的内容

来源:互联网 发布:简单网址导航源码 编辑:程序博客网 时间:2024/05/07 11:33

前几天在论坛里看帖子 发现一帖友提出的问题.如下是我给出来的相应实现

#include <stdio.h>#include <stdlib.h>#include <string.h>#define SET_ARRAY_ITEMS_ZERO(arrName) memset(arrName,0,sizeof(arrName))#define FREE_MALLOC_PTR(ptrName); if(NULL!=ptrName){free(ptrName);ptrName=NULL;}char* ReadSpeacialLine(char* filename, int whichLine);int main(int argc, char* argv[]){char *sdf = NULL;sdf = ReadSpeacialLine(argv[1], atoi(argv[2]));if(sdf){printf("%s", sdf);}FREE_MALLOC_PTR(sdf); //此处必须有,因为在RSL函数里面分配了堆内存return 0;}char* ReadSpeacialLine(char* filename, int whichLine){if (whichLine < 0 || NULL == filename){return NULL;}FILE *fp = fopen(filename, "r");if (NULL == fp) {return NULL;}int reachWhichLine = 0;int curLine = 1;#define LINE_SIZE 256char *data = NULL;data = (char*) malloc(LINE_SIZE);while (!feof(fp))//文件未结束{memset(data, 0, LINE_SIZE);fgets(data, LINE_SIZE - 1, fp);curLine++;if (curLine > whichLine){reachWhichLine = 1; //已经读取到whichLine行break;}}fclose(fp);return 0 == reachWhichLine ? NULL : data;}

0 0
原创粉丝点击