2014-05-19 2 views
-4

문자열이 있습니다. char date[16] ; 마지막 두 기호가 0이 되길 원합니다. 시도 :문자열에 0을 어떻게 저장합니까?

date[14] = '0'; 
date[15] = '0'; 

date[16] = '\0'; 

0은 '\ 0'과 동일합니다. 내가 원하는 것을 어떻게 얻을 수 있습니까?

+2

당신이 '0'char 또는 0 값을 저장 하시겠습니까? – NirMH

+0

내가 원하는 코드는 – MaMu

+0

입니다. 코드가 작동 중입니다. '0'을 저장하면 배열에 '0'문자가 저장되고 '\ 0'은 끝나는 흔적이됩니다. – NirMH

답변

4

, 하지만 당신은 당신이 종료 '\0', 당신은 date[16]에 아무것도 지정하지 않아야합니다 15 0에서 이동을 포함 char date[16] 때문에 인덱스가 있다고 가정 해 .

date의 전체 내용이 무엇인지에 따라,해야 하나 char date[17] 또는

date[13] = '0'; 
date[14] = '0'; 

date[15] = '\0'; 
0

'0'date[14] = '0';에 저장하면 원하는대로 정확하게 수행 할 수 있습니다.

+0

아니요. 문자열이 잘립니다. 떨어져서. 13 개의 표지 만 인쇄합니다. – MaMu

+0

전체 코드를 게시 할 수 있습니까? 다른 질문처럼 보일 것입니다 – NirMH

+0

누구든지 downvoted - 왜 설명 할 수 있습니까? 이 페이지의 다른 대답은 내 질문과 똑같습니다 ... – NirMH

4

'0'이 아니고,'\0'과 동일하다.

문자 '0'의 ASCII 값은 48입니다.

'\0'합니다 (\ 의해) 값 탈출 널 문자 ASCII 값 0를 지칭한다. date[14]='\0'0 저장 (및 널 종료 문자열의 끝으로 표시) 반면 그래서

, date[14] = '0' 0 심볼을 저장한다.

+0

문자열이 잘려져있다. 13 개의 표지 만 인쇄합니다. – MaMu

+0

C 배열은 0으로 인덱싱됩니다. 단지 13 개의 심볼을 얻는 것은'date [12]'가 null이라는 것을 암시한다. –

+0

@OliverMatthews :'date [12]'가''\ 0 ''이면'printf ("% s", date);'는 최대 12 문자를 출력합니다. – pmg

1

배열이 완전히 인쇄되지 않은 경우 '\0' 가비지가있을 수 있습니다.
전체 배열을 초기화 했습니까?

#include <stdio.h> 

int main() 
{ 
    char date[] = { [0 ... 14] = '0', [15] = '\0' }; 

    printf("%s\n", date); 
    return 0; 
} 

예상대로 출력이 000000000000000입니다. 주로 당신이 그것을 시도하는 방식을 수정하는 문자 배열에 문자 '0' 저장

+1

이것은 표준 C가 아니므로 권장하지 않습니다. 더 나은 해결책은'char date [16] = { '\ 0'}; memset (날짜, '0', sizeof (날짜) -1); – Lundin

+0

어떤 방언으로 작성 했습니까? – WileTheCoyot

+0

__ISO C99__에서 배열 인덱스 또는 구조체 필드 이름을 지정하여 순서에 관계없이 요소를 지정할 수 있으며 __GNU C__은 __C90__ 모드의 확장자로도 사용할 수 있습니다. 동일한 값으로 요소 범위를 초기화하는 것은 __GNU Extension__이지만 __clang__도이를 지원합니다. [__Source__] (https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html) – Chnossos

관련 문제