7

我知道这句话的意思

scanf("%d",&x);

但是这个声明有什么作用

scanf("%2d",&x);

我试图搜索这个,但找不到答案。我也想知道内部发生了什么。

4

2 回答 2

11

那是两位数:

int n = 0;
scanf ("%2d", &n);
printf ("-> %d\n", n);

12 -> 12

88657 -> 88

于 2012-12-17T09:14:54.093 回答
2

'%' 符号之后和您要读取的数据类型之前的数字表示该特定数据类型的最大大小。

当您正在读取一个整数 (%2d) 时,它只允许一个最长为两位数的整数。如果您要读取一个 50 个字符长的数组,您应该使用 %49s(为空终止字节留一个)。这是相同的想法。

int number = 0;
scanf("%2d", &number);
printf("%d", number);

如果用户为 scanf() 函数传递了 21,则数字 21 将存储在变量 number 中。如果用户传递的内容超过 21,即 987,则只会存储前 2 位数字 - 98。

于 2012-12-17T13:27:54.133 回答