⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 txtformat.cpp

📁 数据结构是编程的基础
💻 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 + -