2012-11-20 2 views
0

나는처럼 보이는 char buffer[128] 있습니다분할 문자 [] 읽기 수레

-0.003662 0.996887 0.012818 1.010438 0.004120 1.025911

이 중 각 플로트를 얻을 수있는 간단한 방법이 될 것입니다 무엇

C에서 문자 배열?

답변

3

당신이 당신의 문자열에 얼마나 많은 수레 알고 있다면, 당신은 또한 고려할 수 sscanf

char buffer[128] = "-0.003662 0.996887 0.012818 1.010438 0.004120 1.025911"; 
float nums[6]; 
int numFloats = sscanf(buffer, "%f %f %f %f %f %f", 
         &nums[0], &nums[1], &nums[2], &nums[3], &nums[4], &nums[5]); 
+0

문자열에서 수의 수를 알고 있기 때문에 이것은 완벽합니다! 고맙습니다. –

+2

'sscanf()'의 반환 값을 검사하여 예상 된 변환 횟수를 얻었는지 확인해야합니다. – unwind

+0

@unwind 고마워, 좋은 지적, 이것을 보여주기 위해 코드를 업데이트했다. – simonc

2
U는 IT-이 strtok manual 볼 pasrse하는 strtok를() 또는 strtok_r()를 사용할 수

:

뭔가를해야만 같은 :

void parse_numbers(char *buffer) { 
    char *number = NULL; 

    for (number = strtok(buffer, " "); number != NULL; number = strtok(NULL, " ")) { 
     do_something_with_number(conert_string_to_float(number)); 
    } 
} 
float convert_string_to_float(char *number) { 
    float return_value = 0; 
    sscanf(number, "%f", &return_value); 
    return return_value; 
} 
+0

제안 해 주셔서 감사합니다. –