河南省2017退休涨工资:怎样用C语言将文本分成等字数的段?

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 20:03:01
有一个1.txt的文本,是一篇文章,共有大约1000个汉字,未分段。我想利用C语言将其分成200字每段的几段汉字。处理完的格式:1.txt的上面部分显示原来文章,下面显示经过处理的几段每段200个汉字的文章。
最好能给我代码,谢谢了!

/*
本程序由Turbo C2.0编译通过。文本文件1.txt请放在Turbo C所在目录下。则输出文件1.txt也在Turbo C所在目录下。
*/

#include "stdio.h"
main()
{
FILE *fp,*temp;
char ch;
int i=0;
clrscr();
if(((fp=fopen("1.txt","r+"))&&(temp=fopen("1.tmp","w+")))==NULL)
{
printf("Can't open file\n");
printf("Press any key to exit...");
getch();
exit(0);
}
printf("\nPlease wait...");
while(!feof(fp))
{
fputc(fgetc(fp),temp);
i++;
if(i%200==0) fputc('\n',temp);
}
rewind(temp);
fputc('\n',fp);
fputc('\n',fp);
while(!feof(temp)) fputc(fgetc(temp),fp);
fopen("1.tmp","w");
fclose(fp);
fclose(temp);
printf("OK!\n");
printf("Press any key to exit...");
getch();
printf("Bye bye!");
exit(0);
}

声明2个变量:a,b : string

a= {'sifu'};
b= a[1]..a[200]+char($13)

result b;

上一位兄弟用的是什么方法?看不懂。这里每人懂C么?

怎样用C语言将文本分成等字数的段?
(今天我在做游戏的对白分段也用到这个,顺便介绍一下)

我游戏的源代码(调试通过,支持中英文字符,不出现乱码):

//打印到屏幕
//加入了拆行算法
void CTalk::ShowTalk(HDC &hdc)
{
if(count<1)return;
//mode=tm_lft
SelectObject(hdc,font);//Set Font
SetTextColor(hdc,RGB(255,255,0));
TextOut(hdc,50,430,talk[0].name,strlen(talk[0].name));
short p2,line=0,team[3],len;
p2=talk[0].p;
while(p2>=LINEMAX)
{
line++;
p2-=LINEMAX;
}
SetTextColor(hdc,RGB(255,255,255));
checkerr=false;
CString cc;
for(int i=0;i<line;i++)
{
cc=CString(talk[0].content).Right(strlen(talk[0].content)-i*LINEMAX);
TextOut(hdc,70,460+i*LINESPACE,GetStr(LINEMAX,cc),LINEMAX+2);
}
cc=CString(talk[0].content).Right(strlen(talk[0].content)-line*LINEMAX);
TextOut(hdc,70,460+line*LINESPACE,GetStr(p2,cc),p2+2);
}

/*检查字符数量*/
CString CTalk::GetStr(int qlen, CString strSource)
{
int len,i,y;
CString sTemp,sreturn;//,ceshi

if (qlen<2)
return "";
strSource.TrimLeft();strSource.TrimRight();
len=strSource.GetLength();
y=0;
sTemp=strSource;//.Right(len-qlen);

if(checkerr)
{
sTemp=sTemp.Right(sTemp.GetLength()-1);
checkerr=false;
len--;
qlen--;
}
for(i=0;i<len;i++)
{
if(sTemp[y]<0 || sTemp[y]>255)
y=y+2;
else
y=y+1;
if(y>=qlen)
break;
}
//ceshi.Format("%d",y);
//AfxMessageBox(ceshi); ]

if(y>sTemp.GetLength()-1)y=sTemp.GetLength()-1;
if(y!=qlen){
checkerr=true;
if(sTemp[y]<0 || sTemp[y]>255)
y+=2;
else
y+=1;

}
sreturn=sTemp.Left(y);

return sreturn;
}

我写了6年C语言程序,也没见过上两位兄弟这么哄人的

你是不是想做五笔打字的程序。

你最了说的清楚一些。
你可以试试,字符串截聚函数
(一般来说这种问题,应该用字符串函数都可以解决的。)

haha
谁知道楼上的人从那里找来的
骗人也太不真实了吧