刷题tip记录

本文详细介绍了C语言中常用的输入输出技巧,包括scanf函数的返回值解析、使用scanf_s避免缓冲区溢出、利用EOF结束循环读取输入、getline函数获取包含空格的字符串以及设置输出精度保留小数点后位数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刷题tip记录

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

scanf返回值

  1. scanf有int型的返回值,其返回值是能正确接收到的变量个数。
int a, b, c;
int x = scanf_s("%d%d%d", &a, &b, &c);
printf("%d\n", x);

输入:1 2 3 输出:3
输入:1 2 输出:2
输入:1 2 3 4 输出:3

scanf_s

scanf_s同时获取字符串和数组会报访问冲突。
在这里插入图片描述
需要分开获取字符串和整数。

scanf_s("%s",na,sizeof(na));
scanf_s("%d %d %d", &gold, &silver, &tong);

使用scanf_s获取字符串需要获取字符串长度,保证不越界获取。

EOF

EOF表示“文字流”的结尾,“文字流”包括文件或标准输入。
EOF不是特殊字符,是宏定义。

#define EOF (-1)

①EOF表示文件结尾时,系统通过比较文件的长度来判断文件是否到达末尾。EOF是读到文件结尾时返回的一个信号值(-1)。
②EOF表示标准输入的结尾,无法事先知道输入长度,必须输入ctrl+z(windows)或ctrl+d(linux)表示到达末尾。

获取未知个数的输入:
①C实现

int num1, num2;
while (scanf_s("%d%d", &num1, &num2) != EOF)
{
   printf("%d ", num1 + num2);
}

输入:1 2 3 4 5 6
输出:3 7 11
②C++实现

std::vector<int> arr;

int num;
while (std::cin >> num)
{
   arr.push_back(num);
}
for (int i = 0; i < arr.size(); i++)
{
   std::cout << arr[i] << " ";
}

输入:1 2 3 4 5
输出:1 2 3 4 5

getline获取包含空格的字符流

cin不能获取包含空格的字符流

 std::string input;
 std::cin >> input;
 std::cout << input;

输入:all is well
输出:all

 std::string input;
 getline(std::cin,input);
 std::cout << input;

输入:all is well
输出:all is well

输出设置保留小数点后几位

注意:一定要包含头文件

#include <iomanip>
double data = 6.25453234243;
std::cout << std::fixed << std::setprecision(2) << data << std::endl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值