一个函数void printsentense(constant char *line)*line是一个中文自然段,要求将*line中的汉字按句输出。若遇到中文标点“。”“?”“!”即换行输出。
题目是简单了点,不过念在我是菜鸟还请各位大虾多多相助!谢谢了
[此贴子已经被作者于2004-11-24 22:10:01编辑过]
----------------解决方案--------------------------------------------------------
晕 没人愿意帮个小忙吗?
----------------解决方案--------------------------------------------------------
顺便文一下如何在编程时输入汉字
----------------解决方案--------------------------------------------------------
我可以写过几天啊!!我正在写一个小游戏没有时间!如果你自己写遇到困难可以找我!!下周前我写好!
----------------解决方案--------------------------------------------------------
老大什么意思啊!抽点空给个答案啊
----------------解决方案--------------------------------------------------------
这个问题很简单,只要在!。?后加输一个'\n'就行了,汉字是双字节编码,ASCII是单字节编码,所以得有个判别,遇ASCII指针只移动1,遇汉字移动2,自已查一下汉字的编码范围就行了.
----------------解决方案--------------------------------------------------------
是这样吗?
void printsetence(constant char *line)
{int i;
for(i=0;line[i]!='\o';i++)
{
if(line[i]='!'||line[i]='?'||line[i]='.')
printf("\n");
else printf("%c",line[i]);
}
}
----------------解决方案--------------------------------------------------------
倒,你写的是什么?先把E文的解决,再来谈中文吧
----------------解决方案--------------------------------------------------------
题目好象也不太简单呀。 楼主写的程序是…………
看不懂
----------------解决方案--------------------------------------------------------
大家好对不起大家了!!这几天要帮别人有事!!所以没有写!!今天看到这么多人关心!所以我就写了了!!有详细的注释!如果不懂联系我!! 程序如下:
/* void printsentense(char *line) *line是一个中文自然段,要求将*line中的汉字按句输出。 若遇到中文标点“。”“?”“!”即换行输出。 */ #include <stdio.h> #include <string.h>
void printsentense(char * line) { char * phead,*pend,*pend1,*pend2,*pend3; //phead为中文自然段的起始地址,pend为结束地址 //phendn为查找结束的标志地址 bool fFind=false;//判断是否找到结束标志 //初始化认为不存在
pend=pend1=pend2=pend3=phead=line;//初始化 while(*phead!='\0')//但没有到末尾时 { pend1=strstr(phead,"。");//查找是否存在。 pend2=strstr(phead,"!");//查找是否存在! pend3=strstr(phead,"?");//查找是否存在? /*********************************************/ //如果要添加其他的判断结束标志请在此判断
/*********************************************/
/************START**START******START*****************************************/ pend=phead+strlen(phead); if(pend1!=NULL) { fFind=true; pend=pend1;//如果存在。则设置pend } if(pend2!=NULL && pend >=pend2) { fFind=true;//注意这里必须使用>=不能用> pend=pend2;//如果存在!并且是在pend的位置或者前面更改pend } if(pend3!=NULL && pend >=pend3) { fFind=true;//注意这里必须使用>=不能用> pend=pend3;//如果存在?并且是在pend的位置或者前面更改pend }
/*********************************************/ //如果要添加其他的判断结束标志请在此判断结束的标志位置
/*********************************************/ //以上为判断并设置pend为正确的结束位置 /***********END*END*END*END***************************************************/
for(char* i=phead;i<pend;i++) printf("%c",*i); if(pend!=phead) printf("\n");
if(fFind==true) pend+=2;//如果是中文结束标号pend应该加2 phead=pend;//初始化下一个自然段首地址 fFind=false;//初始化认为不存在 } }
[此贴子已经被作者于2004-11-29 03:00:51编辑过]
----------------解决方案--------------------------------------------------------