C++scanf_s输入数组
时间: 2024-11-05 13:33:40 浏览: 37
在C++中,`scanf_s`函数是一个安全版本的格式化输入函数,用于从标准输入流(通常是键盘)读取数据。如果你想通过`scanf_s`给数组赋值,你需要指定数组的地址加上每个元素的大小作为格式说明符后的指针。例如,如果你有一个整数数组`int arr[5]`,你可以这样做:
```cpp
#include <iostream>
#include <csignal> // 引入这个头文件是为了避免缓冲区溢出风险
int main() {
int arr[5];
std::signal(SIGINT, INT_handler); // 设置信号处理,预防意外中断导致的数据未读完
for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { // 避免数组越界
if (scanf_s("%d", &arr[i]) != 1) { // scanf_s返回成功读取的项数,如果不是1则表示读取失败
// 处理错误,如提示用户重新输入或者终止程序
perror("Error reading input");
return 1;
}
}
// 现在数组已填充了从输入得到的值
for (const auto& num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
注意:由于安全原因,现代C++标准建议使用`std::cin`配合`std::vector`等动态容器来代替`scanf_s`操作数组,这样可以避免潜在的缓冲区溢出问题。
阅读全文