在Hackerrank上遇到了更熟悉C(++)的问题。使用scanf()我想读一行包含一堆不同的值。
问题是char之后的值被忽略。读取解决方案是在char之前添加一个空格,但我已经尝试在每个值的单独行上运行scanf(),并且只保留char前面的空间但仍然存在问题。
要学习的课程似乎是使用scanf()而不是任何其他类型的输入方法。所以没有cin或fscanf()的阅读。这个原因可以在同一条线上读取所有类型的值。因此,我不想在读取输入时使用这一行。
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int i;
long l;
long long ll;
char c;
float f;
double d;
/** Read "3 444 12345678912345 a 334.23 14049.30493" from stdin */
scanf("%i %ld %lld %c %f %lf", &i, &l, &ll, &c, &f, &d);
printf("%d\n", i); // 3, as expected
printf("%ld\n", l); // 444 also as expected
printf("%lld\n", ll); // 12345678912345 ...
printf("%c\n", c); // 'a'
printf("%f\n", d); // 14049.30493 ?? It should be: 334.23
printf("%lf\n", d); // 14049.30493 but this time as it should be.
return 0;
}
答案 0 :(得分:0)
scanf("%i %ld %lld %c %f %lf", &i, &l, &ll, &c, &f, &d);
^
!F! D
printf("%d\n", i);
printf("%ld\n", l);
printf("%lld\n", ll);
printf("%c\n", c);
printf("%f\n", d); // < D!
printf("%lf\n", d); // < D!
您正在打印d
变量两次,而不是f
。