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

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

#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 256
	char *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;
}

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值