求个字符串函数,我有写一个,但怎么好都觉得别扭,请帮帮忙

szdufeng 2012-03-15 02:58:03
要求:给定个字符串,首先判断它是不是一个ascii串,如果是,全部换成小写字符

我的程序是:

char * kse_to_lower(char * strDest,const char * strSrc)
{
int len=0;
char * strDestCopy;
if ((strDest==NULL)||(strSrc==NULL))
return NULL;
strDestCopy=strDest;
while (*strSrc && apr_isascii(*strSrc)) {
strSrc++;
++len;
}
strSrc-=len;
if(strlen(strSrc)==len)
{
while ((*strDest++=apr_tolower(*strSrc++))!='\0');
}
else
{
while ((*strDest++=*strSrc++)!='\0');
}
return strDestCopy;
}

运行也好象没有问题(不报错,能输出正确答案),但看着就不舒服,总觉得某个地方有问题,或者有的地方能写得更好。

大家能不能帮帮我?
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameslq 2012-03-15
  • 打赏
  • 举报
回复
char * kse_to_lower(char * strDest,const char * strSrc)
{
int len=0;
char * strDestCopy;
if ((strDest==NULL)||(strSrc==NULL))
return NULL;

len = strlen(strSrc);
if ( 0 == len ) return strDestCopy;
while ( --len > 0 && apr_isascii(strSrc[len]) )
;

if(len < 0 )
{
while ((*strDest++=apr_tolower(*strSrc++))!='\0');
}
else
{
while ((*strDest++=*strSrc++)!='\0');
}

return strDestCopy;
}
starsoft007 2012-03-15
  • 打赏
  • 举报
回复
感觉没什么大问题,挺好的呀。
要是非要改,下面这段代码

while (*strSrc && apr_isascii(*strSrc)) {
strSrc++;
++len;
}

改成

while (*strSrc && apr_isascii(*strSrc++))
++len;
gold_water 2012-03-15
  • 打赏
  • 举报
回复
没什么大问题,不错啊
面包大师 2012-03-15
  • 打赏
  • 举报
回复
while ((*strDest++=*strSrc++)!='\0');//这个直接用个memcpy得了
面包大师 2012-03-15
  • 打赏
  • 举报
回复
while (*strSrc && apr_isascii(*strSrc)) {//strSrc是个const char *这样好吗?
strSrc++;
++len;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧