| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 719 人关注过本帖
标题:简化函数StrOL( ),
只看楼主 加入收藏
喜喜
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:31
专家分:35
注 册:2009-7-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
简化函数StrOL( ),
编制函数StrOL( ), 其函数的功能是: 以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,同时去
除标点符号,之后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中.
 例如: 原文: You He Me
                I am a student.
          结果: Me He You
               student a am I
这里有个答案,感觉挺麻烦的,请问有没有简单的
void StrOL(void) /*标准答案*/
{int I,j,k,strl,l;char c;
for(I=0;I<maxline;I++)
  for(j=0;j<strlen(xx[I]);j++)
    {c=xx[I][j];
    if ((c>='A'&&c<='Z')||(c>='a'&&c<='z')||c==' ') ;
    else xx[I][j]=' ';    }
 for(l=0;l<maxline;l++)
{char ch[80]={0}; char pp[80]={0};
 strl=strlen(xx[l]);
  I=strl-1;  k=1;
  while(1)
   {while (((xx[l][I]>='a'&&xx[l][I]<='z')||(xx[l][I]>='A'&&xx[l][I]<='z'))&&I>=0)
{for(j=k;j>=0;j--)
 pp[j+1]=pp[j]; pp[0]=xx[l][I]; k++;I--; }
strcat(ch,pp);strcpy(pp, """");k=1;
if(I==-1)break;
    while((xx[l][I]<'A'||xx[l][I]>'z')&&I>=0)
   {for(j=k;j>=0;j--)
    pp[j+1]=pp[j];    pp[0]=xx[l][I];    k++;    I--;}
 strcat(ch,pp); strcpy(pp,"""");
 k=0;
 if(I==-1)break;}
 strcpy(xx[l],ch);
  }}
搜索更多相关主题的帖子: 函数 
2009-08-09 09:17
西园竹
Rank: 5Rank: 5
等 级:职业侠客
帖 子:41
专家分:305
注 册:2009-8-8
收藏
得分:20 
给个例子吧,假设字符串长度不超过100,还有标点符号只有逗号
void main()
{
    char *str = "hello world, I love c";
    char acBuf[100];
    char acRes[100] = {0};
    int  i;

    strcpy(acBuf, str);/*复制一份*/

    for (i=strlen(acBuf)-1; i>0; i--)/*因为要逆序,所以从后面开始*/
    {
        if (acBuf[i] == ' ' || acBuf[i] == ',')/*去掉空格或者逗号*/
        {
            acBuf[i] = 0;
        }
        else if (acBuf[i-1] == ' ' || acBuf[i-1] == ',')/*如果前一个是逗号或者空格说明已经到了单词的开始了*/
        {
            sprintf(acRes+strlen(acRes), "%s ", &acBuf[i]);/*保存单词*/
        }
    }
    if (acBuf[0] != ' ' && acBuf[0] != ',')/*为了防止第一个字符是空格或者逗号*/
    {
        sprintf(acRes+strlen(acRes), "%s", &acBuf[i]);
    }

    if (acRes[strlen(acRes)-1] == ' ')/*去掉最后一个空格*/
    {
        acRes[strlen(acRes)-1] = 0;
    }

    printf(acRes);/*输出*/
}

2009-08-09 09:46
快速回复:简化函数StrOL( ),
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014632 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved