C++的%n

在 C 和 C++ 的标准格式化输入/输出中,%n 不是一个常见的标准格式化说明符。

然而,在某些特定的实现中,特别是在使用 scanf 或 sscanf 函数时,%n 被用来获取到当前位置为止成功匹配和赋值的输入字符的数量。

以下是一个示例:

#include <iostream>
#include <cstdio>

int main() {
    int num1, num2;
    int count;
    char str[] = "10 20";

    std::sscanf(str, "%d %d%n", &num1, &num2, &count);
    std::cout << "num1: " << num1 << ", num2: " << num2 << ", count: " << count << std::endl;

    return 0;
}

在上述示例中,count 将存储到 %n 之前成功匹配和处理的字符数量。、

问题:<cstdio>全称是什么?

`<cstdio>` 的全称就是 `<cstdio>` 。它对应的 C 语言头文件是 `<stdio.h>` ,在 C++ 中,为了与 C 语言的头文件有所区分并更好地支持类型安全等特性,将 C 语言的标准头文件去掉 `.h` 扩展名,并在前面加上字母 `c` ,同时将其中的函数和对象都放在 `std` 命名空间中。

在代码中,使用 sscanf 函数从字符串中读取两个整数 10 和 20 ,并将读取到当前位置的字符数量存储到 count 中。

假设字符串能够成功解析,输出结果可能类似于:

num1: 10, num2: 20, count: 5

这里的 count 为 5 ,是因为读取了 "10 " 这两个数字和一个空格,共 5 个字符

然后把以上程序修改了一下改成等待用户输入

#include <iostream>
#include <cstdio>

int main() {
    int num1, num2;
    int count;
    char str[100];  // 定义 str 数组并指定大小

    std::cout << "请输入两个整数,用空格分隔: ";
    std::cin >> num1 >> num2;

    std::cin.ignore();  // 忽略输入流中的剩余字符(包括空格和换行符)

    std::cin.getline(str, sizeof(str));  // 读取用户输入的整行字符串

    std::sscanf(str, "%d %d%n", &num1, &num2, &count);
    std::cout << "num1: " << num1 << ", num2: " << num2 << ", count: " << count << std::endl;

    return 0;
}

然后输入10 20发现结果是一样的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值