| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:字符前移函数
只看楼主 加入收藏
源本云明
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-7-1
结帖率:0
收藏
 问题点数:0 回复次数:0 
字符前移函数
一时兴起,随便编写了一个小程序:字符串中字符的前移函数。(即如果输入字符串woshizhongguoren ,指定字符z,输入位移3,那么运行后的结果应该是wozshiongguoren。当我程序写完之后运行,产生了错误,运行的最终结果是一个向上的箭头,而且不管我位移的数字有没有超出字符串的长度,并不做判断。如图
2.zip (3.67 KB)
所示。百思不得其解,请各位同仁相助,指出问题所在,谢过!
程序的源代码如下:我怀疑问题出在
                                if(t<(k-m)||t>k)a[t]=s[t];
                       else if(t>(k-m)&&t<k)a[t]=s[t-1];
                       else a[t]=s[k];
我的想法是利用这段语句,将旧的字符串按照条件一一复制到新的字符串中去。
请问这段语句能完成对新串的赋值功能吗?如果不能,那么原因何在?应该如何处理?
源代码:
#include "stdio.h"
#include "string.h"
#define N 100
formove(char *s,char c,int m)
{
    int i,j,k,t;
    char a[N];
    j=strlen(s);
    j--;
    if(m>j)
    printf("位移超出字符串长度!\n");
    else
    {for(i=0;i<j;i++)
     {if('s[i]'=='c')
         {k=i;if(k<m)printf("位移超出范围!\n");
              else
                    for(t=0;t<j;t++)
                   {
                       if(t<(k-m)||t>k)a[t]=s[t];
                       else if(t>(k-m)&&t<k)a[t]=s[t-1];
                       else a[t]=s[k];
                   }               
         }
      }
    }
    puts(a);
}
void main()
{
    int n;
    char c,str[100];
    printf("请输入字符串,字符和位移:\n");
    gets(str);
    c=getchar();
    scanf("%d",&n);
    formove(str,c,n);

}
搜索更多相关主题的帖子: 函数 字符 前移 
2010-07-02 14:33
快速回复:字符前移函数
数据加载中...
 
   



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

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