Demo——为指定的文件加入行号

/* main.c*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LINE_LEN	4096	/* 一行的最大字符数 */
/* 
 *	功能:	读入文本文件中的一行,剔除换行符号
 *			(换行标识	(1) '\r'和'\n'
 *						(2) '\n')
 *	返回值:
 *			成功:	>=0
 *			失败:	-1
 */
int ReadLine(char *buf, int len, FILE *fp)
{
	int 	readCount;
	char 	errFlag = 0;
	int 	i=0;
	char 	tempChar;
	
	memset(buf, 0, len);
	for(i=0; i<len; i++){
		tempChar = '\0';
		/*读入一个字符*/
		readCount = fread(&tempChar, sizeof(char), 1, fp);
		if( 0 >= readCount){
			if(readCount<0)
				errFlag = 1;
			break;
		}
		
		/*其他字符时,进行赋值*/
		buf[i] = tempChar;

		/*换行符'\n'*/
		if('\n' == tempChar){/*
			if(i>0 && '\r' == buf[i-1])
				前一位为回车符号'\r'
				buf[i-1] = '\0';
			else
				buf[i] = '\0';*/
			break;			
		}
	}
	
	/*没有读入数据、并出错*/
	if(i<=0 && errFlag)
		return -1;
	else
		return strlen(buf);
}

void re_write(const char *srcFile, const char *destFile)   
{   
	char tmpStr[LINE_LEN];	/* 临时缓冲区 */
	int lineNo = 0;			/* 行号 */
	char tmpNo[10];			/* 行号的字符数据 */
	int ret;
	
	FILE *pSrc = fopen(srcFile, "r");		/* 只读打开 */
	FILE *pDest = fopen(destFile, "w+");	/* 重新打开 */
	
	while( !feof(pSrc) ) /* 判断文件是否结束 */
	{  
		ret = ReadLine(tmpStr, LINE_LEN, pSrc);	/**/
		if(ret < 0)
			break;
		
		lineNo++;
		sprintf(tmpNo, "%06d: ", lineNo);
		fwrite(tmpNo, strlen(tmpNo), 1, pDest);   
		fwrite(tmpStr, strlen(tmpStr), 1, pDest);   
	}   

	fclose(pSrc);   
	fclose(pDest);   
}

int main()
{
	re_write("e:\\src", "e:\\dest");

	return 0;
}

 

转载于:https://www.cnblogs.com/java201408/archive/2013/03/15/3900972.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值