c语言-逆置字符串

本文介绍了一种使用 C 语言实现字符串逆置的方法,并通过两个不同的函数演示了如何逆置整个字符串以及逆置指定长度的字符串。文章展示了具体的代码实现过程,并解释了针对 UTF-8 编码的多字节字符如何正确进行逆置。

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

#include "stdio.h"
#include "string.h"
int main()
   {
        char s[]="张伟伟";
        int len=strlen(s);
        printf("%d\n",sizeof(s));
        printf("%s\n",s);
        int start=0;
        int end=len-3;

        char *p =&s[0];
        char *p1=&s[len-3];
        while(start<end)//uft8三个字节组成一个汉字,逆置时候就要考虑到这点
        {   
        //下面代码 是1-7 2-8 3-9 进行交换
                char tem=*p;
                *p=*p1;
                *p1=tem;
                p++;
                p1++;
                tem=*p;
                *p=*p1;
                *p1=tem;
                p++;
                p1++;
                tem=*p;
                *p=*p1;
                *p1=tem;
                p++;
                p1-=5;
                start+=3;
                end-=3;
        }   
        printf("%s\n",s);


}

以下是字符串逆置

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include <sys/stat.h>

void inverse(char *str)//字符串逆置
{
    char *p1 = str;
    char *p2 = str + strlen(str) - 1;
    while (p1 < p2)
    {
        char tmp = *p1;
        *p1 = *p2;
        *p2 = tmp;
        p1++;
        p2--;
    }
}
int main()
{
    char buf[] = "abcdefg";
    inverse(buf);
    printf("buf=%s\n", buf);
}
void inverse(char *str,int num)//字符串逆置指定逆直前几位
{
    char *p1 = str;
    char *p2 = str + num - 1;
    while (p1 < p2)
    {
        char tmp = *p1;
        *p1 = *p2;
        *p2 = tmp;
        p1++;
        p2--;
    }
}
### 如何在C语言中反转字符串 在C语言中,可以通过多种方法实现字符串的反转。下面介绍一种常见的方法:通过双指针技术完成字符串的原地反转。 #### 方法描述 此方法的核心思想是利用两个索引变量 `i` 和 `j` 分别指向字符串的第一个字符和最后一个字符。每次迭代时,交换这两个位上的字符,并逐步向中间靠拢,直到两者相遇为止[^1]。 #### 实现代码 以下是一个完整的程序示例: ```c #include <stdio.h> #include <string.h> // 定义用于反转字符串的函数 void reverse_string(char* str) { int i = 0; int j = strlen(str) - 1; // 使用循环逐个交换两端字符 while (i < j) { char temp = str[i]; str[i] = str[j]; str[j] = temp; i++; j--; } } int main() { char str[100]; // 提示用户输入字符串 printf("请输入一个字符串:\n"); fgets(str, sizeof(str), stdin); // 移除可能存在的换行符 str[strlen(str) - 1] = '\0'; // 调用反转函数处理字符串 reverse_string(str); // 输出反转后的结果 printf("反转后的字符串是:\n%s\n", str); return 0; } ``` 上述代码展示了如何读取用户的输入字符串并调用自定义的 `reverse_string()` 函数对其进行反转操作[^2]。 另一种方式可以借助指针来简化逻辑表达。例如,在某些场景下可以直接使用指针替代数组索引来访问内存中的数据项[^5]。 #### 关键点解析 - **边界条件**:当字符串长度小于等于一时无需任何动作即视为已反转。 - **时间复杂度分析**:由于只需要遍历一半序列长度因此整体效率较高O(n/2)=O(n),其中 n 表示原始串长[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值