2013-11-10 3 views
0

그래서 실제 문자를 배열에 저장하는 방법을 알고 싶습니다. 실제 문자를 배열에 저장하는 방법은 무엇입니까?

char arr[4] = "sup!"; 
    char backwards[4]; 
    backwards[0] = *(arr + 3); 

나는, 만약 내가 실제 문자가 나타납니다 % C를 이용하여 뒤쪽으로 [0]의 printf와 메시지를 표시합니다, 내가 이렇게하면 내 두 번째 질문 인 것 같아요?

+2

예. 'printf ("% c", backwards [0]);'는'!'를 인쇄 할 것입니다. 왜 사용하지 않으시겠습니까? –

+0

확실하지 않다 ... 나는 프로그램을 만들 때 이상한 오류가 발생하므로 도움이 될지도 모르겠다.하지만 당신의 권리는 내가 할 수 있었다. – Bourezg

답변

2

첫째,의는 배열의 크기 문제를 해결하자 : C에서

문자 배열이 당신이 \0 후행하는 종료하여 문자열을위한 공간을 추가 할 필요가 있다는 것을 의미 null-terminated:이다. 첫 번째 줄에 char arr[5]을 사용할 수 있습니다. (절대적으로 정확히 인 경우 NEVER C 문자열 처리 함수 중 하나와 함께이 배열을 사용하려고하면 문자열이 아닌 문자로 개별 문자가 할당됩니다. 기술적으로 필요하지만 디버깅 시간을 줄이고 여분의 바이트를 사용하십시오.) 아마도 이것은 "이상한 오류"의 원인 일 것입니다.

당신이 아는 것처럼 보이지만, C에서의 다른 점은 zero-based입니다. 이것은 당신이 선언하고 char arr[4] 같은 배열 할 때, 당신이 정말로 C는 데이터를 배열과 스톰의 끝을 걷거나 나쁜 값을 읽을시키는에 대한 양심의 가책이 없습니다

arr[0] 
arr[1] 
arr[2] 
arr[3] 

얻을 수 있다는 것을 의미한다. 여기는 용 이예요. 조심해.

지금, 당신의 실제 질문에 :

1) 당신이 따옴표를 사용하는 경우 작은 따옴표 arr[2]='x';를 사용하여 실제 문자를 할당, 당신은 null로 끝나는 논의 된 바와 같이, 인 C 문자열을 할당한다.

2) 예, printf%c이 트릭을해야합니다.

관련 문제