strncpy함수 사용중인데 깔끔하지 않습니다
글쓴이: unuseid / 작성시간: 목, 2016/10/06 - 11:52오전
문자열로 표현된 값을 double 형으로 바꾸는 동작입니다
strncpy함수를 이용해서 문자열중 일정 구간을 복사해 이를 atof함수를통해 double형에 저장하는데
strncpy 동작후에 값이 깔끔하게 만들어지지 않습니다.
당연히 atof동작을 통해 원하는 값을 변수에 저장할수 없구요
어떻게 수정하는게 좋을까요?
strncpy(data_H, Receive_data+7, 4); fprintf(stderr, "expernet data %s \n",Receive_data); fprintf(stderr, "humidity string %s \n",data_H); global.humidity = atof(Expernet_H); fprintf(stderr, "humidity double %f \n",global.humidity);
아래는 로그 입니다.
data <----- H뒤의 35.3을 추출해 double에 저장 하려 합니다
humidity string 35.427.1�| <----- 35.4271???? 로 바뀜.
humidity double 35.427000
report change!
data
humidity string 35.027.1�|
humidity double 35.027000
Forums:
레퍼런스에 답이 있습니다.
http://www.cplusplus.com/reference/cstring/strncpy/
strncpy로 길이가 n 이상인 문자열을 n만큼 복사할 경우 뒤에
NUL
문자가 안 붙습니다.strncpy(data_H, Receive_data+7, 4);
뒤에data_H[4] = '\0';
를 붙여 주면 좋겠군요.(물론
data_H
의 크기가 5 이상일 때 얘깁니다.)댓글 달기