2013-06-01 4 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 정의에서 문자열은 문자 종료 첫 번째 널 문자 등의 연속 한 입니다. 문자열의 후행 널 종결자를 역순으로해서는 안됩니다.

변경 : 또한 충분한 공간을 확보해야

revstr[length] = '\0'; 

:

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

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

수동은 reverse 함수의 끝에서 후행 null 종결을 추가 널 종결 자 :

변경이에

char revstr[length]; 

:

char revstr[length + 1]; 
+0

'int void()'에 대해서 잊지 마세요 :) – kotlomoy