从说" 55 117 28"中提取数字的最佳方式是什么?用空格分隔,以便我将它们存储在变量中,之后再做算术方程式。 即:
用户输入:55 117 25 。 。
printf(" The Total is %.2f\n", total); // prints 197.00
printf(" The first number * secondNumber is %.2f\n", total); // prints 6435.00
编辑:为了明确这一点,我不是在寻找我的算术例子的答案,而是从用户输入中提取数字的方法,例如" 55 48 862 21&# 34;或者" 45 89 631 574 85 12 745 685 2541 ..."等等
答案 0 :(得分:3)
int x;
int sum = 0;
while ( scanf( "%d", &x ) > 0 ) sum += x;
如果您想要从字符串中提取数字,例如
char numbers[] = "55 117 25";
然后您可以使用sscanf
ibstead scanf
例如
while ( sscanf( numbers, "%d", &x ) > 0 ) sum += x;
要阅读一串数字,您可以使用函数fgets
。
至于浮点数的格式说明符,那么你已经在问题中指定了它。
答案 1 :(得分:1)
#include <stdio.h>
int wordCount(const char *s);//
int main(void){
char line[4096];
printf("user input : ");
fgets(line, sizeof(line), stdin);
int wc = wordCount(line);//number of elements in the space-delimited
double nums[wc];
int len, c = 0;
char *s = line;
double x, total=0.0;
while(1==sscanf(s, "%lf%n", &x, &len)){
total += (nums[c++] = x);
s += len;
}
printf(" The Total is %.2f\n", total);
printf(" The first number * secondNumber is %.2f\n", nums[0] * nums[1]);
return 0;
}
int wordCount(const char *s){
char prev = ' ';
int wc = 0;
while(*s){
if(isspace(prev) && !isspace(*s)){
++wc;
}
prev = *s++;
}
return wc;
}