C/C++ 字符串操作1---循环移位

来源:互联网 发布:怎么让淘宝店铺关掉 编辑:程序博客网 时间:2024/05/21 12:49

C/C++ 字符串操作1---字符串移位(出自《程序员面试宝典》)

题目:编写一个程序,作用是把一个char组成的字符串循环右移n位。


#include<stdio.h>#include<string.h>#include<stdlib.h>void loopmove1(char *str,int n);void loopmove2(char *str,int n);void loopmove3(char *str,int n);void main(){char str[1024];int n;scanf("%s%d",str,&n);loopmove3(str,n);printf("%s\n",str);}/*strcpy*/void loopmove1(char *str,int n){int len=strlen(str);int m=len-n;char *temp=(char *)calloc(len+1,sizeof(char));if(temp==NULL)exit(1);strcpy(temp,str+m);strcpy(temp+n,str);*(temp+len)='\0';strcpy(str,temp);}/*strncpy*/void loopmove2(char *str,int n){int len =strlen(str);int m=len-n;char *temp=(char *)calloc(len+1,sizeof(char));if(temp==NULL)exit(1);strncpy(temp,str+m,n);strncpy(temp+n,str,m);*(temp+len)='\0';strncpy(str,temp,len+1);}/*memcpy*/void loopmove3(char *str,int n){int len =strlen(str);int m=len-n;char *temp=(char *)calloc(len+1,sizeof(char));if(temp==NULL)exit(1);memcpy(temp,str+m,n);memcpy(temp+n,str,m);*(temp+len)='\0';memcpy(str,temp,len+1);}

运行结果:



0 0
原创粉丝点击