C,从一行读取多个数字,忽略空白



我正在处理一个问题,需要输入一行中间有一个或多个空格的数字,然后将数字相加。但我有一个问题,忽视空白。

我尝试过使用scanf("(和scanf("%*c"(。最有效的方法是什么?

谢谢。

如果输入字符串中的输入整数数量未知,则可以使用演示程序中显示的方法。

#include <stdio.h>
#include <stdlib.h>
int main(void) 
{
enum { N = 100 };
char line[N];
while ( fgets( line, N , stdin ) != NULL && line[0] != 'n' && line[0] != '' )
{
long long int sum = 0;
const char *s = line;
char *p = line;
do
{
s = p;
sum += strtol( s, &p, 10 );
} while ( s != p );
printf( "sum = %lldn", sum );
}
return 0;
}

如果要输入字符串

1 2 3 4 5

那么输出将是

sum = 15

要读取整数,请使用格式字符串%d,如下所示:

#include <stdio.h>
int main(void)
{
int sum, i, n;
sum = 0;
n = scanf("%d", &i);
while (n == 1) {
sum += i;
n = scanf("%d", &i);
}
printf("%dn", sum);
return 0;
}

如果你想读取实数,请使用格式字符串%lf(代表长浮点(并相应地调整上面的代码。

在C++中实现这一点的方法是

double a;
double b;
double c;
std::cin >> a >> b >> c;

我不确定你是否可以在C中做一些非常类似的事情,请告诉我这是否有帮助。

最新更新