2012-04-08 3 views
-2

C++의 문자열에 대한 질문이 있습니다. null 바이트가 하나의 인덱스로 추가되면 어떻게 될까요? 과 같습니다.C++에서 null 바이트를 가진 문자열

char name [10] = "Jack"; 

0 1 2 3 
J | a | c | k | 

name [5] = '\0'; 

이것은 내 숙제 상태입니다. 여분의 kludge.

+0

시도해 보면 .... – littleadv

+1

'name'으로 무엇을 할 것인가에 달려 있습니다. –

+3

힌트 : 문자열 리터럴''Jack ''에는 이미 널 종결 자 (null terminator)가 있습니다. –

답변

5

"일어날 일"이란 무엇을 의미합니까? 당신이 쓴 무엇에 따르면

, 당신은 단순히 다음 여섯 번째로 \0를 할당 Jack\0으로 최초 5 개 위치를 작성, 10 개 위치의 배열을 만들 수 있습니다. 문자열과 함께 작동하는 모든 함수는 똑같은 방식으로 처리합니다. 문자열은 대개 \0으로 끝나기 때문입니다.

+0

문자열의 길이가 4를 유지한다는 것을 의미합니까? 또는 인덱스 5에 null을 추가 한 이후 5로 변경됩니다. – user1318393

+2

@ user1318393 : "문자열의 길이"가 의미하는 바에 달려 있습니다. 문자열의 길이가 널 종료 자 ('strlen()'이 어떻게 작동하는지) 이전에 널이 아닌 문자의 수로 정의 된 경우, 길이는 동일하게 유지됩니다. 일부 문자열 표현은 문자열 자체에 null 문자를 표시 할 수 있습니다. 이 경우 길이를 4에서 5로 늘려야합니다. 어떻게 표현되는지에 대해 이야기하지 않고 "이 문자열의 길이"를 묻는 것은 의미가 없습니다. 행에있는 두 개의 null chacters가 실제로 의미있는 것을 의미하는 일부 문자열 표현이 있습니다. –

+1

@ user1318393 예제에서 문자열이 배열과 일치하지 않습니다. ''Jack ''을 지정할 때 이미 '\ 0'을 다섯 번째 위치에 넣고 있습니다. 문자열의 끝을지나 모든 요소를 ​​수정할 수 있으며 "문자열"에 영향을 미치지 않습니다. 다섯 번째 위치를 수정하지 않는 한 ('\ 0'을 제거하지 않으면), 문자열은 길이 4를 유지할 것입니다 (적어도 "문자열의 길이"의 일반적인 의미에 따라). – Saphrosit