打印阵列,填写了另一个功能

时间:2013-06-01 16:24:26

标签: c

我尝试反转我的字符串并打印出结果。

#include <stdio.h>
#include <string.h>

void reverse(char *string, char *revstr)
{   
    int length, i, j;

    length = strlen(string);

    for (i=length, j=0; i >= 0; i--, j++) {
        revstr[j] = string[i];
    }
}

int void()
{   
    char string[] = "reverse!";
    int length = strlen(string);
    char revstr[length];
    int i;

    reverse(string, revstr);

    printf("%s", revstr); //nothing
    for (i=0; i<=strlen(string); i++) {
        printf("%c", revstr[i]); //It's work
    }
    printf("\n");

    return 0;
}

1 个答案:

答案 0 :(得分:8)

从C定义中,字符串是一个连续的字符序列         终止并包括第一个空字符。您不应该反转字符串的尾随空终止符。

变化:

for (i=length, j=0; i >= 0; i--, j++)

到这个

for (i = length - 1, j=0; i >= 0; i--, j++) {

并在reverse函数的末尾手动添加尾随空终止符:

revstr[length] = '\0';

您还应为空终止符保留足够的空间:

变化:

char revstr[length];

到此:

char revstr[length + 1];