📜  C中的scanf()中的%n,包含示例(1)

📅  最后修改于: 2023-12-03 14:40:25.229000             🧑  作者: Mango

C中的scanf()中的%n

在C语言中,scanf()函数除了可以从输入流中读取数据外,还可以使用 %n 标志来获取已经读取的字符数,也就是指针当前的偏移量。

%n 标志的用法

在使用 scanf() 函数时,通过 %n 标志可以获取已经读取的字符数。具体的用法如下:

scanf("%d%n", &integer, &num);

上述语句表示读取一个整数,并将已经读取的字符数存储在 num 变量中。在 scanf() 函数返回之后,num 变量的值就是指针当前的偏移量。

需要注意的是,%n 标志的使用会影响到读取的字符数,因此在使用 %n 标志时,需要注意计算读取的字符数时需要将其从总字符数中减去。

%n 标志的示例

对于以下输入:

100 200

下面的代码演示了如何使用 %n 标志来获取已经读取的字符数:

#include <stdio.h>

int main()
{
    int a, b;
    int num1, num2;

    scanf("%d%n%d%n", &a, &num1, &b, &num2);

    printf("a = %d, b = %d\n", a, b);
    printf("number of characters read for a: %d\n", num1);
    printf("number of characters read for b: %d\n", num2);
    printf("total number of characters read: %d\n", num2 - num1);

    return 0;
}

上面的代码的运行结果为:

a = 100, b = 200
number of characters read for a: 3
number of characters read for b: 7
total number of characters read: 4

从运行结果中可以看出,变量 ab 的值已经被正确地读取,而 num1num2 都分别记录了它们所读取的字符数。此外,通过对 num1num2 的差值计算可以得到总的字符数为4。