北京移动套餐资费 最新:求vc高手,帮我编一个把一篇文章按20个字一组切割的程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 19:58:48
啊,是20个汉字
还有要注意可能出现的各种情况:标点等谢谢了!

谢谢我收到了,有没有调试实现的,发给我邮箱好吗?
fangdaniang@yahoo.com.cn

gb10830 和gb2312 编码规则竟然不兼容 可恨

gbk的资料没找到不过觉得它和gb2312是兼容的,但我不能保证.

gb10830 和gb2312分别写了一个分割器 请笑纳;

/********* gb2312 *********/
#include <stdio.h>
#include <string.h>

#define CUT 20 //每几个汉字开始分割
#define MAXPATH 256*9+1 //最大支持8层文件夹深度的文件路径

int main (int n,char * u[] ){

if (n<4)
{printf ("命令行错误:\n %s 输入文件 输出文件前缀 输出文件后缀\n文件名可以包含路径.",u[0]);
return 0;
}

int mych=0,named=0,num=0,so=0;

char buf[CUT*2+2], name[MAXPATH];

FILE *in,*out;

in= fopen(u[1],"r");

printf ("任务进行中\n");

while((mych=fgetc(in))!=EOF)

{
buf[num++]=mych;
if (mych>0x80 )
buf[num++]=fgetc(in);
so++;
if (so==20)
{
sprintf (name,"%s%d.%s\0",u[2],++named,u[3]);
out=fopen(name,"a+");
fwrite(buf,1,num,out);
fclose (out);
num=0;
so=0;
}
}/*while*/
if (num)
{ sprintf (name,"%s%d.%s\0",u[2],++named,u[3]);
out=fopen(name,"a+");
fwrite(buf,1,num,out);
fclose (out);
}
fclose (in);
printf ("\n共输出 %d 个文件,请查收.\n",named);
}

/********* gb18030 *********/

#include <stdio.h>
#include <string.h>

#define CUT 20 //每几个汉字开始分割
#define MAXPATH 256*9+1 //最大支持8层文件夹深度的文件路径

int main (int n,char * u[] ){

if (n<4)
{printf ("命令行错误:\n %s 输入文件 输出文件前缀 输出文件后缀\n文件名可以包含路径.",u[0]);
return 0;
}

int mych=0,named=0,num=0,so=0;

char buf[CUT*4+2], name[MAXPATH];

FILE *in,*out;

in= fopen(u[1],"r");

printf ("任务进行中\n");

while((mych=fgetc(in))!=EOF)
{
buf[num++]=mych;
if (mych>0x80 )
{
if ((buf[num++]=fgetc(in))< 0x40 )
{buf[num++]=fgetc(in);
buf[num++]=fgetc(in);
}

}

so++;

if (so==20)
{
sprintf (name,"%s%d.%s\0",u[2],++named,u[3]);
out=fopen(name,"a+");
fwrite(buf,1,num,out);
fclose (out);
num=0;
so=0;
}

}/*while*/
if (num)
{ sprintf (name,"%s%d.%s\0",u[2],++named,u[3]);
out=fopen(name,"a+");
fwrite(buf,1,num,out);
fclose (out);

}
fclose (in);

printf ("\n共输出 %d 个文件,请查收.\n",named);

}