我正在处理一个问题,我需要输入一行数字,中间有一个或多个空格,然后将数字相加。但是我遇到了一个问题,就是如何忽略这些空格。
我试过使用 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] != '\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 = %lld\n", 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("%d\n", sum);
return 0;
}
如果你想读实数,就用格式字符串%lf(代表长浮点数),并相应调整上面的代码。
在C++中的做法是
double a;
double b;
double c;
std::cin >> a >> b >> c;
我不知道你是否可以在C语言中做非常类似的事情,请告诉我是否有帮助。