📄 txtformat.cpp
字号:
// txtformat.cpp : Defines the entry point for the console application.
//
#define NULL 0
#include "stdafx.h"
//////////////////////全局变量定义////////////////////
int pagelength=0; //页长
int pagewidth=0; //页宽
int leftmargin=0; //左页边
int headinglength=0; //页眉
int footinglength=0; //页脚
int startnumber=0; //起始页码
char *eightspace=" "; //留八个空格
char *bufferchar=NULL; //行字符处理缓存
char word[20]; //单词
char infilename[30]="input.txt"; //源文件
char outfilename[30]="output.txt"; //目标文件
FILE *infile,*outfile; //文件操作流
//////////////////////全局变量定义////////////////////
//////////////////////函数定义////////////////////
void initparameter(); //变量初始化
void readfile(int flag); //读文件
void setleftmargin(int flagenter); //留左页边
void clearword(); //单词缓存清零
void clearbuffer(); //行字符缓存清零
//////////////////////函数定义////////////////////
//////////////////////变量初始化////////////////////
void initparameter()
{
char filename[30];
printf("请输入文本格式化各项参数\n");
////////////////// //打开源文件////////////////////////
printf("请指定输入文件名(文件不存在则为input.txt):");
scanf("%s",filename);
if((infile=fopen(filename,"r"))==NULL)
{
infile=fopen(infilename,"r");
}
else
{
strcpy(infilename,filename);
}
////////////////// //打开目标文件////////////////////////
printf("请指定输出文件名(文件创建或打开失败则为output.txt):");
scanf("%s",filename);
if((outfile=fopen(filename,"w"))==NULL)
{
outfile=fopen(outfilename,"w");
}
else
{
strcpy(outfilename,filename);
}
printf("请指定输出文件的页长:");
scanf("%d",&pagelength);
printf("请指定输出文件的页宽:");
scanf("%d",&pagewidth);
printf("请指定输出文件的左空的:");
scanf("%d",&leftmargin);
printf("请指定输出文件的头长(不为零):");
scanf("%d",&headinglength);
printf("请指定输出文件的脚长:");
scanf("%d",&footinglength);
printf("请指定输出文件的起始页:");
scanf("%d",&startnumber);
bufferchar=(char *)malloc(pagewidth*sizeof(char));
clearword();
clearbuffer();
}
//////////////////////变量初始化////////////////////
//////////////////////变量清零///////////////////
void clearbuffer()
{
int i;
for(i=0;i<pagewidth;i++)
bufferchar[i]='\0';
}
void clearword()
{
int i;
for(i=0;i<20;i++)
word[i]='\0';
}
//////////////////////变量清零////////////////////
//////////////////////取单词////////////////////
int getword()
{
char letter;
clearword();
while(!feof(infile))
{
letter=fgetc(infile);
if(-1==letter) return 2;
if('@'==letter)
{
return 1;
}
else
{
if(isspace(letter))
{
return 0;
}
else
{
if(isalpha(letter)||isdigit(letter))
{
word[strlen(word)]=letter;
word[strlen(word)+1]='\0';
}
else
{
word[strlen(word)]=letter;
word[strlen(word)+1]='\0';
return 0;
}
}
}
}
return 2;
}
//////////////////////取单词////////////////////
//////////////////////读文件////////////////////
void readfile(int flag)
{
while((int)(strlen(bufferchar)+strlen(word))<pagewidth-1)
{
if(0!=word[0]&&0!=bufferchar[0])
strcat(bufferchar," ");
strcat(bufferchar,word);
if(getword())
{
strcat(bufferchar,word);
setleftmargin(flag);
fprintf(outfile,"%s",bufferchar);
strcpy(bufferchar,eightspace);
return;
}
if(feof(outfile)) break;
}
setleftmargin(flag);
fprintf(outfile,"%s",bufferchar);
clearbuffer();
}
//////////////////////读文件////////////////////
//////////////////////留左空白////////////////////
void setleftmargin(int flagenter)
{
int i;
if(flagenter)
{
fputc('\n',outfile);
}
for(i=0;i<leftmargin;i++)
{
fputc(' ',outfile);
}
}
//////////////////////留左空白////////////////////
int main(int argc, char* argv[])
{
int i=0,j=0,k=0,m=0;
initparameter();
for(k=0;!feof(infile);k++)
{
for(i=0;i<headinglength+1;i++)
{
fputc('\n',outfile);
if(0==k&&i==(headinglength-2)) break;
}
for(j=0;j<pagelength;j++)
{
readfile(j);
}
for(i=0;i<footinglength+1;i++)
{
if(2<footinglength&&2==i)
{
for(m=0;m<leftmargin+pagewidth/2;m++)
fputc(' ',outfile);
fprintf(outfile,"%d",(k+startnumber));
}
else
{
fputc('\n',outfile);
}
}
for(m=0;m<leftmargin*2+pagewidth-15;m++)
fputc('_',outfile);
fprintf(outfile,"%s"," end ____");
}
fclose(infile);
fclose(outfile);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -