我正在使用命令行獲取輸入的3個空格分隔的浮點數。例如"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
」
編輯:我需要使用花車,而不是整數。
我正在使用命令行獲取輸入的3個空格分隔的浮點數。例如"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
」
編輯:我需要使用花車,而不是整數。
也許這
#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;
}
正是我需要的。 – 2014-10-29 06:05:52
這一行:if(res> = 0)不能確保讀取3個項目。該行應該是:if(res == 3) – user3629249 2014-10-29 16:30:25
如果您使用命令行參數,簡單地嘗試像
#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]);
}
這對於OP表示他們實際上在做什麼而言是正確的。 – user3629249 2014-10-29 16:31:24
這應該檢查c(通常argc)在繼續進行atof呼叫之前是否至少爲3,如果其小於3 segfault。 @ user3629249我不同意這更符合OP說他們實際上在做什麼,他們說他們使用的是scanf。 – 2014-10-29 20:19:44
什麼是你期待? – Roecrew 2014-10-29 05:31:02
@Roecrew查看我的編輯 – 2014-10-29 05:32:54
什麼是稀缺?你的意思是scanf? – Roecrew 2014-10-29 05:36:08