2012-10-17 5 views
-3

확실히 간단하지만 C의 초보자이며 다음 코드가 왜 괴롭 히는지 이해할 수 없습니다. 내가 문자열을 입력 할 때C에서 단어 바꾸기

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

int main() 
{ int i,length; 
    char *word; 
    scanf("%s",word); 
    length = strlen(word); 
    char res[length]; 

    for(i=0;i<length;i++){ 
     res[i]=word[length-1-i]; 
     printf("%d",res[i]);} 
} 

, 내가 메시지를 얻을 : 코드는 문자열의 간단한 되돌리기 문자 위치입니다 (lldb) 콘솔, 그리고 디버거에서 : movb %의 알, (%의 RCX) , EXC_BAD_ACCESS (코드 = 1, 어드레스 = 0x0으로) 존재하지 않는 메모리 위치

+2

"코드가 괴롭힘"이란 문구는 C에 내장 된 오류 메시지가 아닙니다. –

+1

"문자열 반전"을 의미합니다. 'abcdef' ->'fedcba'? –

+2

문제를 설명하지 않으면 사람들이 어떻게 답변을 제공 할 것으로 기대합니까? –

답변

5
char *word; 
scanf("%s",word); 

잘못된 물품.

char word[MAXSIZE]과 같은 배열을 만들거나 malloc 또는 calloc을 사용하여 동적으로 메모리를 할당하십시오. malloc, calloc, fgets

+0

고마워요. 나는 단어가 공백을 인식하지 않는 것 같아서 문제가있다. ('a'를 쓰면 'b'만 받는다.) Btw, 나는 나의 포스트를 편집했다 그러나 나의 downvote를 어떻게 떨어져서 얻을 수있다 – user1611830

+0

단어는 단지 변수 다. 문제는 scanf입니다. 그것이 내가 fgets를 사용한다고 말한 이유입니다. 그리고 다운 폰트를 끄는 것에 관해서는 당신을 위해 그것을 벗을 수 없습니다. 너를 떨어 뜨린 사람들 만이 할 수있어. –

1
printf("%d",res[i]); 

사용 %c 대신 %d 당신이 바이트의 대신 출력 문자를하고 싶은 경우 : 그리고 당신의 메리 방법에 당신을 얻을 fgets하지 scanf

일부 링크를 사용하여 값.