字符串反转

题目:字符串反转,如将字符串“Hello World”反转为”dlroW olleH”

代码一:

1234567891011121314151617181920212223242526272829
#include <stdio.h>void Char_Reverse(char* ch){    int i = 0;    while (ch[i] != '\0')     {        i++;    }    char temp[i];    int j = 0;    int x = i;    for (j=0; j<i; j++)    {        temp[j] = ch[x-1];        x--;    }    for (j=0; j<i; j++)     {        ch[j] = temp[j];    }}int main(){    char ch[50];    scanf("%s",ch);    Char_Reverse(ch);    printf("%s",ch);    return 0;}

但是这段代码无法反转带空格的字符串,原因是scanf遇到空格就停止读取了。
解决这个问题,使用%[^\n],表示读取除了换行符 \n 以外的所有字符,这样可以读取整行文本。


代码二:

123456789101112131415161718192021222324252627
#include <stdio.h>void Char_Reverse(char* ch){    int i = 0;    while (ch[i] != '\0') {        i++;    }    char temp[i];    int j = 0;    int x = i;    for (j=0; j<i; j++)    {        temp[j] = ch[x-1];        x--;    }    for (j=0; j<i; j++) {        ch[j] = temp[j];    }}int main(){    char ch[50];    scanf("%[^\n]",ch);    Char_Reverse(ch);    printf("%s",ch);    return 0;}

这里改进了scanf不能读取空格之后的问题。
输入Hello World
输出为dlroW olleH

🔍 ×