一个函数void printsentense(constant char *line)*line是一个中文自然段,要求将*line中的汉字按句输出。若遇到中文标点“。”“?”“!”即换行输出。
题目是简单了点,不过念在我是菜鸟还请各位大虾多多相助!谢谢了
[此贴子已经被作者于2004-11-24 22:10:01编辑过]
大家好对不起大家了!!这几天要帮别人有事!!所以没有写!!今天看到这么多人关心!所以我就写了了!!有详细的注释!如果不懂联系我!! 程序如下:
/* 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编辑过]