2017-03-01 6 views
0

문자 배열에 문자를 추가하고 싶습니다. 내 코드문자 배열에 문자를 추가하는 방법

char x[100]; 
int i; 
void setup() { 
Serial.begin(115200); 
} 
void loop() { 
for (i=0; i<11;i++) 
{ 
    x[i]=(char)i; 
} 
Serial.println(strlen(x)); 
for (i=0;i<11;i++) 
{ 
    Serial.print(x[i]); 
} 

delay(1000); 
} 

내가 어레이 [0] = 0, X [1] = 1, X [2] = 2 ...... X가 [10] 10

를 = X가 될 것으로 예상하고있다

하지만 배열은 비어있는 것처럼 보입니다. Serial.println(strlen(x));은 0을 반환합니다. 및 Serial.print(x[i]);은 아무것도 인쇄하지 않습니다. 배열에 문자를 추가하는 방법 ???

+1

@RoadRunner를 추가; UB가 없으면 첫 번째 문자는 이미 0입니다. –

+0

@RoadRunner 그 외에도 배열의 끝에는 ('\ 0'이 이미 있습니다. 이것은 전역 변수이므로 정적 링크가 있으므로 툴체인이 언어 표준을 준수하면 처음에는 0으로 채 웁니다. – WhozCraig

+0

배열의 끝에 여전히 '\ 0'을 추가하려고 시도했습니다. Serial.print (x [i]); andSerial.println (strlen (x)); 아무것도 인쇄하지 않습니다. 0을 반환합니다. –

답변

2

Oups에서 C 문자열은 일반적으로 null 바이트로 끝나는 문자 배열입니다. 모든 strxx 함수는이 규칙을 따릅니다.

배열의 첫 번째 문자이기 때문에 ... 0, strlen는 인덱스 0에서 종료 널 (null)을 찾아 제대로 문자열의 길이는 또한 0

, 코드 0 모든 문자는 것을 말한다 10 (ASCII로 가정)은 제어 할 수없는 문자를 제어합니다.

내가 무엇을하고 싶어하는 대체

for (i=0; i<11;i++) 
{ 
    x[i]= '0' + i; /* 0 to 9 and : */ 
} 
x[11] = '\0'; /* terminate the array with a null to make it a C string */ 
0

있다고 가정 : x[i] = (char)i; 에 : x[i]=(char) (((int) '0') + i);x[11] = '\0';

+2

이 코드 조각은 질문을 해결할 수 있지만 [설명 포함] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)은 품질을 향상시키는 데 정말로 도움이됩니다. 귀하의 게시물의 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. – DimaSan