2013-05-01 3 views
0

나는 요일로부터 개별 문자를 얻으려고합니다. 여기에 내가 가진 것이있다.하나의 const char *를 얻는 중

const char *daysOfTheWeek[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; 
const char *tc = daysOfTheWeek[dayOfWeek]; 
text_layer_set_text(&dow_one, &tc[0]); 
text_layer_set_text(&dow_two, &tc[1]); 
text_layer_set_text(&dow_three, &tc[2]); 

무엇 게재되어 ... =
& dow_two = 에드
& dow_three = D
& dow_one입니다 I가 원하는 것은


& dow_one =
& dow_two W = e
& dow_t hree = d

&을 제거하고 tc [0]을 사용하면 컴파일 오류가 발생합니다.

83 : 9 : 오류 : 'text_layer_set_text'의 인수 2를 통과하는 것은 캐스트없이 정수의 포인터를 만드는 [-Werror] /사용자/미케/pebble_dev/조약돌-SDK 출시-001/시계/iWatch/포함/pebble_os.h : 677 : 6 : 참고 : 'const char *'가 필요하지만 인수는 'char'유형입니다.

이것은 sprintf에 액세스 할 수없는 임베디드 시스템입니다. Pure C 만

답변

1

코드에서 "문자열 중간에"장소를 가리키고 있습니다 (예 : &tc[1]은 "tc이라고하는이 문자열이지만 위치 [1]에서 시작하는 위치"를 가리키는 포인터 임). 거기에서 "끝까지 모든 것을 얻습니다 ('\0' 종결 자)". 당신은 단지 하나 개의 문자를 원하는 경우에, 당신은 길이 1의 널 종료 문자열 + 1로 각각의 문자열을 복사해야합니다.

static char dow1[2]; 
static char dow2[2]; 
static char dow3[2]; 
char tc[]="Wed"; 

dow1[0] = tc[0]; dow1[1]='\0'; 
dow2[0] = tc[1]; dow2[1]='\0'; 
dow3[0] = tc[1]; dow3[1]='\0'; 

tc 당신이 관심있는 문자가 포함되어 있다고 가정한다 이제

을 할 수
text_layer_set_text(&dow_one, dow1); 
text_layer_set_text(&dow_two, dow2); 
text_layer_set_text(&dow_three, dow3); 

dow1이 char 배열의 이름이고 첫 번째 요소에 대한 포인터이기도하다는 점을 이용하십시오. 자신의 의견에 따라 static으로 선언하고 있습니다. 즉, 변수가 선언 된 함수가 반환 된 후에도 계속 존재한다는 것을 의미합니다.이 값은 나중에 표시 목적으로 참조 될 수 있으므로 중요합니다. 당신의 text_layer_set_text() 함수가 무엇인지 질문에서 명확하지 - 당신은 정말 그냥 문자를 필요로하는 경우 물론

, 그것은 그것은 당신이 그것을 사용하는 방법에 조금 따라 단순히

char c1, c2, c3; 
c1 = tc[0]; 
c2 = tc[1]; 
c3 = tc[2]; 

입니다. 내가 조금 주위를 봤 거든 그리고 위의 당신을 위해 확인해야한다고 생각 -하지만 난 100 % 확신 할 수없는 자갈을 사용하지 않았습니다.

+0

준수하지만 데이터가 표시되지 않습니다. text_layer_set_text가 기대하는 것과 관련이 있는지 확실하지 않습니다. void text_layer_set_text (TextLayer * text_layer, const char * text); –

+0

나는'tc'가 관심있는 문자열을 포함하고 있다고 확신한다고 가정한다. 나는 그것을 명시 적으로 만들지 않았고 답을 수정할 것이다. – Floris

+0

나는 그것을 가지고 있었고, 내가 가진 문제를 발견했다. 그것은 정적 차일 필요가있었습니다. 도와 주셔서 감사합니다. –

관련 문제