【发布时间】:2019-07-31 09:35:34
【问题描述】:
1。如果我输入1234 5.7 elephant 将给出结果输出
12 34 eleph 我知道 * 表示它忽略输入字段,%2d 最多考虑 2 个字符。但是为什么 34 应用于第二个转换字符 %d 它属于第一个 %d 呢?
2.我可以在scanf中包含空格、制表符、换行符吗?发生什么了?
scanf("% d % d%s",var1, var2, var3);//这样好吗?
/* input: 1234 5.7 elephant */
/* output: 12 34 eleph */
#include <stdio.h>
int main() {
int x, y;
char text[20];
scanf("%2d %d %*f %5s", &x, &y, text);
/* input: 1234 5.7 elephant */
printf("%d %d %s", x, y, text);
/* output: 12 34 eleph */
return 0;
}
预期结果:12 头大象
【问题讨论】:
-
@user3121023 对scanf无效。它对 printf 有效。
-
@KamilCuk 是的,'*' 是一个赋值抑制字符。我没看到。:)
-
34输入不属于第一个输入,因为它在两个字符处停止。这就是限制%2d的重点——因此第三和第四个字符不属于它。没有输入被忘记:如果它在输入缓冲区中,它会一直保留在那里直到被读取。 -
vijay_ky 提示:将文本作为文本发布,而不是作为图片发布。文字作为图片吸引了反对票。
-
@chux 是 %2d 最多 2 个字符,感谢您提供有关不要将文本作为图像发布的信息