c++读取文件最后一行(转)

 

int main() {
	FILE *fp;
	char sline[1024];
	size_t rd;
	int i;


	fopen_s(&fp, "D:\\111.txt", "r");
	if (fp == NULL) {
		//printf("%d,[%s]\n", errno, strerror(errno));
		return 0;
	}

	fseek(fp, 0, SEEK_END);
	if (ftell(fp) > 1023)
		fseek(fp, -1023, SEEK_CUR);
	else
		fseek(fp, -ftell(fp), SEEK_CUR);

	memset(sline, 0, sizeof(sline));
	rd = fread(sline, 1, 1023, fp);
	if (sline[rd - 1] == '\n')
		sline[rd - 1] = 0;

	for (i = (1023 > rd ? rd : 1023); i >= 0; i--) {
		if (sline[i] == '\n') {
			break;
		}
	}
	if (i < 0) {
		printf("this line is too long....\n");
		return 0;
	}
	printf("last line is:\n%s\n", sline + i + 1);

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值