printf函数不会打印反转字符串

时间:2015-06-21 18:51:59

标签: string printf reverse

我必须编写一个获取字符串然后将其反转的函数。我写了这段代码,它没有给我编译错误:

#include <stdio.h>
#include <string.h>
char *reverse(char *str);

int main(void){

    char string[100];
    printf("Insert the string to be inverted: ");
    gets(string);
    reverse(string);
    printf("Inverted string is: %s\n", string);
    }

char *reverse(char *str){

    char h;
    int i, j;
    for(i=0, j=strlen(str); i<j; i++, j--){

        h=str[i];
        str[i]=str[j];
        str[j]=h;
        }

    }

我遇到的唯一问题是,printf显然不会打印反转的字符串。谁能帮我?

2 个答案:

答案 0 :(得分:1)

反向字符串在位置0处具有终止符method_name param, other_method other_param

答案 1 :(得分:0)

strlen(str)为您提供字符串的大小,即终止空字符的索引。

您不想交换空终结符,因此strlen(str) - 1是您想要交换的最后一个字符的索引。

因此,j应从strlen(str) - 1开始。