您当前的位置:首页 > 计算机 > 编程开发 > C语言

用C语言编写一个函数,把一个字符串循环右移n位

时间:12-29来源:作者:点击数:

编写一个函数,把一个char组成的字符串循环右移n位。

编写一个函数,把一个char组成的字符串循环右移n位。例如,原来是“abcdefghi”,如果 n=2,移位后应该是“hiabcdefgh”。

函数原型如下:

//pStr是指向以'\0'结尾的字符串的指针
//steps是要求移动的n位
void LoopMove(char * pStr, int steps);

题目分析

这个题目主要考查读者对标准库函数的熟练程度,在需要的时候,引用库函数可以很大程度上简化程序编写的工作量。

最频繁被使用的库函数包括strcpy()、memcpy()和memset()。

以下采用两种方法来解答。

方法一代码:

#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void LoopMove(char *pStr, int steps){
    int n = strlen(pStr) - steps;
    char tmp[MAX_LEN];
    memcpy(tmp, pStr+n, steps);  //拷贝字符串
    memcpy(pStr+steps, pStr, n);
    memcpy(pStr, tmp, steps);  //合并得到结果
}
int main(){
    char str[] = "www.baidu.com";
    LoopMove(str, 3);
    printf("%s\n", str);
    return 0;
}

方法二代码:

#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void LoopMove(char *pStr, int steps){
    int n = strlen(pStr) - steps;
    char tmp[MAX_LEN];
    strcpy(tmp, pStr+n);  //拷贝字符串
    strcpy(tmp+steps, pStr);
    *(tmp + strlen(pStr)) = '\0';
    strcpy(pStr, tmp);  //合并得到结果
}
int main(){
    char str[] = "www.baidu.com";
    LoopMove(str, 3);
    printf("%s\n", str);
    return 0;

输出结果:

comwww.baidu.
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门