C语言中如何实现字符串的反转?

Python013

C语言中如何实现字符串的反转?,第1张

#include<stdio.h>

#include<string.h>

string_change(char * p)

{

        int i,len

        char temp

        len = strlen(p)

        //printf("%d \n", len)

        //test printf("%d\n",len)

        for(i=0 i<(len/2) i++)

        {

                temp = p[i]

                p[i] = p[len-1-i]

                p[len-1-i] = temp 

        }

}

int main(void)

{

        char a[20] = "1234567890"

        printf("%s\n",a)

        string_change(a)

        printf("%s\n",a)

        return 0

}

两个明显的误解:

char* a="12***"这样定义是错误的。这样 a指向字符常量的指针。而字符串常量是不能改变的。所以停止运行。

c中数组是从0开始编号的。所以字符串最后一个字符是a[len-1]

读取字符串,浏览字符串每一个字符,

如果是空格就输出空格,

否则就保存当前位置,从当前位置移动到下一个空格或字符尾前,

从当前位置开始反向输出,直达回到保存的位置

最后输出回车,结束

//以下是C语言版的,需要的话,可以看看

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define String_MaxSize 10000 //读入字符串的最大长度

int main()

{

char stringPtr[String_MaxSize] //保存读入的字符串

//循环读取直到文件尾

while(gets(stringPtr))

{

int stringPtr_length = strlen(stringPtr) //字符串的长度

int i

//循环读取整段字符串

for(i = 0i <stringPtr_lengthi++)

{

//如果字符为空格

if(stringPtr[i] == ' ')

{

//直接输出空格

printf(" ")

}

//如果字符非空格

else

{

int tempPos = i //保存当前i的位置

int j //代替i进行反向移动

//读取到下一个空格或字符串尾的前一个位置

while(i <stringPtr_length &&stringPtr[i] != ' ')

{

i++

}

i--

//输出单词

for(j = ij >= tempPosj--)

{

putchar(stringPtr[j])

}

}

}

//输出回车

printf("\n")

}

//输出回车

printf("\n")

return 0

}

#include<stdio.h>

void reverse(char s[])

{ int i,j

char c

for(i=0s[i]i++)

for(i--,j=0j<i)

{ c=s[j]

  s[j++]=s[i]

  s[i--]=c

}

}

int main()

{ char s[200]

gets(s)

reverse(s)

puts(s)

return 0

}