|
char hour[2] = {recvTime[0],recvTime[1]};//시간을 추출
char min[2] = {recvTime[2],recvTime[3]};
char sec[2] = {recvTime[4],recvTime[5]};
char hund[2] = {recvTime[6],recvTime[7]};// 1/100초를 추출
여기 문제가 있겠죠.
atoi 라는 함수는 문자열을 숫자로 바꿔주는데,
C의 문자열이란게, 문자열이 끝났음을 알려주는 0 값이 끝에 와야 하잖아요.
즉,
char hour[3] = {recvTime[0],recvTime[1], 0}; 처럼 해 보시죠.
임형섭 님이 쓰신 글 :
: void setTime(char* recvTime)//시간을 문자열로 가져옴 ex 12345678
: {
: struct time time1;
: gettime(&time1);
: Form2->Memo1->Lines->Add("셋업타임의 값:");
: Form2->Memo1->Lines->Add(recvTime);
: char hour[2] = {recvTime[0],recvTime[1]};//시간을 추출
: char min[2] = {recvTime[2],recvTime[3]};
: char sec[2] = {recvTime[4],recvTime[5]};
: char hund[2] = {recvTime[6],recvTime[7]};// 1/100초를 추출
: int hour1 = atoi(hour);//문자열을 정수형으로 바꿈
: int min1 = atoi(min);
: int sec1 = atoi(sec);
: int hund1 = atoi(hund);
: time1.ti_hour = (unsigned char)++hour1; //값을 대입
: time1.ti_min = min1;
: time1.ti_sec = sec1;
: time1.ti_hund = hund1;
:
: settime(&time1);
: }
:
:
: 이렇게 작성을 하였는데 시간이 안바뀌네요 왜 그런지 설명 부탁드립니다.
: 컴파일러는 빌더2010이고, 운영체제는 윈도우비스타입니다.
:
: time1.ti_hour = 11; //값을 대입
: time1.ti_min = 11;
: time1.ti_sec = 11;
: time1.ti_hund = 11;
: 이런식으로 직접 숫자를 넣으면 시간이 바뀝니다. 시간이 바뀐다는 것은 os 아래 시계의 값이 정해준 값으로 바뀐다는것을 말합니다.
|