题目:编写一函数:strlshif(char *s,int n),其功能是吧字符串s中的所有的字符左移n个位置,串中的前n个字符移到最后。
解题思路:
找到字符的最后位置,然后循环n次赋值,将前n个字符依次赋给从最后一个字符开始的最后n个字符,最后 输出
C代码:
#include<stdio.h>
#include<string.h>
void strlshif(char *s,int n);
void main()
{
char s[80];
int n;
gets(s);
scanf("%d",&n);
strlshif(s,n);
}
void strlshif(char *s,int n) //字符串和指针是互通的,字符串做为函数的形参时,可以是char *s,或者是 char s[]
{
char *p,*q;
int m,i;
m=strlen(s); //因为s是一个数组,可以直接求得数组的长度
p=s+n; //将p指向移动了n个字符后的起始位置
q=s+m; //将q指向字符串的最后
for(i=0;i<n;i++) //循环n次,依次赋值
*q++=*s++;
*q='\0'; //最终将q的最后一个字符赋值为'\0',否则会乱码
printf("%s",p); //输出
}运行结果:
版权声明:本文为weixin_43217572原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。