2014-10-29 2 views
0

명령 줄을 사용하여 3 float의 입력을 공백으로 구분하여 입력하고 있습니다. 예 : "1.234 5.678 9.012".명령 줄에서 배열 입력 가져 오기

내가 현재 사용하고 있습니다 :

float xyz[3] = {0}; 
scanf("%f", xyz); 
print(%f %f %f, xyz[0], xyz[1], xyz[2]); 

을 출력 "1.234000 0.000000 0.000000"입니다 그러나. 내가 대신 정수의 수레를 사용해야합니다 :

예상 출력은 "1.234000 5.678000 9.012000"

EDIT입니다. 당신이 명령 줄 인수를 사용하는 경우

+0

같은 시도? – Roecrew

+0

@ Roquerew 위 내 편집을 참조하십시오. –

+1

무엇이 부족합니까? 스캔? – Roecrew

답변

2

어쩌면 당신은 무엇을이 기대했던

#include <stdio.h> 

int main(int argc, char** argv) 
{ 
    float vals[3]; 

    printf("input 3 float values: "); 
    int res = scanf("%f %f %f", &vals[0], &vals[1], &vals[2]); 

    if(res == 3) 
    { 
     printf("read 3 floats %f %f %f\n", vals[0], vals[1], vals[2]); 

    } else 
    { 
     printf("failed to read 3 float values\n"); 
    } 

    return 0; 
} 
+0

정확히 내가 필요한 것. –

+1

이 줄은 : if (res> = 0)가 3 개의 항목을 읽지 못했다는 것을 의미합니다. 행은 다음과 같아야합니다. if (res == 3) – user3629249

2

, 단순히

#include<stdio.h> 
#include<stdlib.h> 
main(int c, char **v) 
{ 

float xyz[3]={0}; 

xyz[0]=atof(v[1]); 
xyz[1]=atof(v[2]); 
xyz[2]=atof(v[3]); 

printf("%f %f %f\n",xyz[0],xyz[1],xyz[2]); 

} 
+0

이것은 OP가 실제로 수행하고있는 것에 대해 정확합니다. – user3629249

+0

atof 호출을 계속하기 전에 c (일반적으로 argc)가 3 이상인지 확인해야합니다 (세 개 미만인 경우). @ user3629249 나는 이것이 OP가 실제로하고 있다고 말한 것에 더 일치한다고 동의하지 않는다. 그들은 scanf를 사용하고 있다고 말했다. –

관련 문제