C语言反转字符串

1.使用string.h中的strrev函数

#include <iostream>
#include <cstring>
using namespace std;  

int main()
{
    char s[]="hello";  

    strrev(s);  

    cout<<s<<endl;  

    return 0;
}

 

2.使用algorithm中的reverse函数

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;  

int main()
{
    string s = "hello";  

    reverse(s.begin(),s.end());  

    cout<<s<<endl;  

    return 0;
}

  

3.自己编写

#include <iostream>
using namespace std;  

void Reverse(char *s,int n){
    for(int i=0,j=n-1;i<j;i++,j--){
        char c=s[i];
        s[i]=s[j];
        s[j]=c;
    }
}  

int main()
{
    char s[]="hello";  

    Reverse(s,5);  

    cout<<s<<endl;  

    return 0;
}

  

或者

char *revstr(char *str, size_t len)
{

    char    *start = str;
    char    *end = str + len - 1;
    char    ch;

    if (str != NULL)
    {
        while (start < end)
        {
            ch = *start;
            *start++ = *end;
            *end-- = ch;
        }
    }
    return str;
}

  

C语言中所谓的字符串不过是字符数组,后跟一个0x00字符标识结尾,所以反转起来很容易,只要一个循环依次将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换……如果最中间有两个字符(即需要反转的字符串长度为偶数),那就交换,如果最中间有一个字符(即需要反转的字符串长度为奇数),那就不需要碰它。还有就是最后一个用来标识字符串结尾的0x00字符不用动它。

时间: 2024-10-07 04:15:50

C语言反转字符串的相关文章

golang——reverse反转字符串

reverse反转,是个比较基础算法.要实现这个方法,从常理考虑可以申请一个新空间,然后将字符串的从尾到头依次填充该空间,最后新空间的内容就是反转后的结果了,这个方式的算法复杂度是O(n),并且还需要重新申请空间. 然而通过对字符串前后对调实现的,方法非常优雅,复杂度一下就降到了O(n/2).用golang语言模拟如下: package main import ( "fmt" ) func main() { s := "hello,golang语言" fmt.Pri

反转字符串(c语言)

简单的反转字符串实现 #include <stdio.h> #include "string.h" void exchange(char *string, int c1, int c2); void revertString(char *string, int iStart, int iEnd); int main(int argc, const char * argv[]) { // insert code here... printf("Begin>&g

小试牛刀之反转字符串

最近玩儿python玩上瘾了,突然想念c语言,所以,休闲下:解法一:如果没有对申请外部空间有所限制,那就先试试这个喽: 1 void invert_str1(char *old_str, char *new_str) 2 { 3 int i = strlen(old_str)-1; 4 int j = 0; 5 if (old_str == NULL) printf("error!"), exit(1); 6 bzero(new_str, sizeof(new_str)); 7 for

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const char *nptr, char **endptr, int base):函数的解释说明 这个函数会将参数nptr字符串根据参数base来转换成长整型数.参数base

iOS开发入门 ? C语言(字符串、字符串数组、命令行参数)

字符串 1. 概念 用双引号引起来的就是字符串 "a string" //C语言编译器会将两个并列的字符串自动拼接成一个字符串 "a string""another a string" // \是换行连接的标记(一行不够写) "a looooooooooong \ string" 常见ASCII编码: 'A' == 65    'a' == 97    '0' == 48    '\0' == 0 int a[10]; //表

C语言之字符串处理函数

C语言中字符串处理函数介绍 下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数——输出字符串的函数 一般的形式为puts(字符串组) 作用:将一个字符串输出到终端.如,char一个string,并赋予初值.调用puts(string);进行字符串的输出. 2.gets函数——输入字符串的函数 一般的形式:gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址. ge

反转字符串

问题: 1.反转字符串,比如str=“hello world!!!",反转后ret=“!!!dlrow olleh"; 代码如下: #include <stdio.h> #include <stdlib.h> char* reverse(char inp[],int size){ if(size<0) return NULL; //NULL代表空地址,null只是一个符号 int i=0,j=size-1; while(i<j){ char tmp=

[算法] C# Revert 单词反转字符串[低时间复杂度]

无聊期间想起了一道字符串反转的问题. 大致要求输入"I am a good boy",输出"boy good a am I". 要求不能用已经封装好的方法实现.于是乎,我上网查了一下,基本都是用了封装后类库.于是我自己写了一个小算法,低时间复杂度高空间复杂度的算法. private string Revert(string str) { if (str.Length == 0) { return string.Empty; } string newStr = nul