指针真的是个小机灵--将字符串中的n个字符左移,串中的前n个字符移到最后

题目:编写一函数: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版权协议,转载请附上原文出处链接和本声明。