2014-04-24 4 views
0

지금까지이 코드를 작성했지만 최종 출력 (공란)을 얻지 못했습니다. 내가 예상 한 출력은 Hello World 문자열을 넣고 oi으로 바꾸면 문자열이 Helli Wirld이됩니다. 하지만 최종 결과물에는 아무 것도 없습니다. substitute()에서문자 바꾸기

char * substitute(char *, char, char); 

int main(void){ 

    char arr[255]; 
    char i,j; 
    printf("Enter a string: "); 
    gets(arr); 
    printf("Find a char: "); 
    scanf(" %c", &i); 
    printf("Replace with: "); 
    scanf(" %c", &j); 
    printf("Final output: "); 
    printf("%s", substitute(arr, i, j)); 
    return 0; 
} 

char * substitute(char *data, char find, char replace){ 
    while(*data!='\0'){ 
    if(*data==find){ 
    *data=replace; 
    } 
    data++; 
    } 
    return data; 
} 
+3

에 의해 당신은 반환하고 대체하지 않습니다 문자열의 끝을 가리키는 포인터. – geoffspear

+0

@Wooble 함수에서? 나는 그 성격을 대체하지 않습니까? – user3568692

+0

원래 문자열의 문자를 바꾸지 만 문자열의 시작 부분이 아니라 끝 부분의 포인터를 반환합니다. – geoffspear

답변

3

당신은 종료 '\0'에 그래서 지금은 점, 당신이 당신의 while 루프에서 증가했다 포인터 data을 반환하고 그 무엇 printf()입니다.

당신은 문자열을 통과에 대해 별도의 로컬 변수를 사용할 수 있습니다 중 하나 또는 모두에 substitute()의 반환 값을 사용하고

printf("%s", substitute(arr, i, j)); 

substitute(arr, i, j); 
printf("%s", arr); 
+0

내가 그것을 얻을, 감사합니다. – user3568692

+0

개선을 위해 @ Clifford 감사합니다. –