C语言中关于字符串左右循环移位的问题

本文详细介绍了在C语言中如何实现字符串的循环右移和左移,提供了两种不同的方法,包括使用基本字符串函数和纯C语句实现,通过实例代码进行了解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   我们在C语言中常常碰到字符串循环左右移位的题型,下面对其进行详解:

    例如:有一组char的字符串:abcdefghijk 。你要循环左移3位变成ijkabcdefgh(也有写出ijkabcdefghi);或右移三位变成defghijkabc(也有写成cdefghijkabc);

   首先我们来解决字符串循环右移的问题:

方法一:利用已有的字符串函数。

#include<stdio.h>

#include<string.h>

void rightloop(char *a, int n);

main()

{

char a[100];   int n;

printf("请输入要循环的字符串:/n");

scanf("%s",a);

printf("请输入要循环字符串的位数:/n");

scanf("%d",&n);                                        //以上代码也可以直接赋初值,我考虑的是一般情况//

void rightloop(a,n);                                     //本例以a[]="abcdefghijk", n=3为例讲解//

printf("输出循环右移的字符串:%s/n",a);

}

 

 

void rightloop(char *a, int n)

{

char b[100];      //数组b要做的够大即可//

int m;

m=strlen(a)-n;               //求出除去要循环右移之后剩下的字符的个数//

strcpy(b,a+n);             // a+n,a代表a[0]的地址再加上n,表示要把a[n]之后的字符串(即那些不用循环右移的字符,共有m个)复制到数组b中。这时b[]="defghijk"。 //

strcpy(b+m,a);        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值