c++scanf_s字符串的输入
时间: 2024-10-22 08:27:18 浏览: 14
C++字符串内容笔记122
`scanf_s` 是 C++ 标准库中的一个安全版本的 `scanf` 函数,它用于从标准输入流或其他指定位置读取格式化的数据。当你需要从用户处获取字符串时,可以使用 `%s` 格式说明符与 `scanf_s` 结合。
例如,如果你想让用户输入一个字符串并将其存储在一个字符数组中,你可以这样做:
```cpp
#include <iostream>
#include <csignal> // 包含 signal 和 SIGINT (用于捕获 Ctrl+C 终止)
char input[50]; // 定义一个足够大的数组来存储字符串
std::string str;
void safe_input() {
int result = scanf_s("%s", input, sizeof(input) - 1); // 注意大小减一,因为最后一个元素是空终止符 '\0'
if (result == EOF || !str.empty()) { // 如果读取结束或已成功读入,处理输入
std::cout << "You entered: " << input << std::endl;
// 添加清理工作,如关闭文件、释放内存等
} else {
std::cerr << "No string provided." << std::endl;
}
}
int main() {
signal(SIGINT, safe_input); // 设置 Ctrl+C 事件处理函数
try {
safe_input(); // 开始接收用户输入
} catch (const std::exception& e) {
std::cerr << "An error occurred: " << e.what() << std::endl;
}
return 0;
}
```
这个例子中,`scanf_s` 会等待用户输入一个字符串,直到遇到空格、换行符或其他非字符为止。然后,它会在输入字符串末尾自动添加一个空字符 `\0`,以便表示字符串的结束。
阅读全文