2013-06-01 82 views
0

我試着反轉我的字符串並打印出結果。打印數組,填寫其他功能

#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; 
} 
+3

'INT空隙()'我認爲它應該是'INT主()' – ka2m

+0

@ row248如果此'炭revstr [長度]; '爲你編譯然後添加標籤'c99' – kotlomoy

回答

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]; 
+0

不要忘記'int void()':) – kotlomoy