/* 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;
}