字符前移函数
一时兴起,随便编写了一个小程序:字符串中字符的前移函数。(即如果输入字符串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);
}