【发布时间】:2020-12-31 10:31:25
【问题描述】:
我正在为我的学校学习 C++。我正在使用 Visual Studio 编写 C++ 代码,我正在尝试编译此代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
freopen("cd.inp", "r", stdin);
freopen("cd.out", "w", stdout);
int a, b;
while (true){
cin >> a >> b;
cout << a << ' ' << b;
break;
}
fclose(stdin);
fclose(stdout);
}
我遇到了这些错误:
严重性代码描述项目文件行抑制状态 错误 C4996 'freopen':此函数或变量可能不安全。考虑改用 freopen_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。详细信息请参见在线帮助。 clock_degrees F:\CODING\C++\clock_degrees\clock_degrees\clock_degrees.cpp 11
严重性代码描述项目文件行抑制状态 警告 C6031 忽略返回值:'freopen'。 clock_degrees F:\CODING\C++\clock_degrees\clock_degrees\clock_degrees.cpp 11
我现在该怎么办?
我也有一些关于 scanf 和 printf 而不是 freopen 的问题。我认为问题来自
【问题讨论】:
-
你现在应该做的,实际上是使用 C++ 而不是 C。
freopen是一个 C 库函数,并不总是指定 C 库的标准输入/输出函数对 @ 有何影响987654323@ 和std::cout。即使您解决了此编译器诊断问题,这也可能有效,也可能无效。您应该查看如何使用std::ifstream和std::ofstream,以便打开从文件读取或写入的流,并使用它而不是std::cin和std::cout,通过freopen劫持底层文件流.附言scanf和printf也是 C。 -
您需要从其他地方获取 C++ 编码示例。这是 C 和 C++ 的混搭。学习 C++ 已经够难的了。
-
不相关说明:在 C++ 中,如果您坚持使用 C 函数,则应使用
#include <cstdio>而不是使用已弃用的“stdio.h”。 -
很酷,有人删除了我的评论,到目前为止,这是唯一真正有帮助的评论,而不是人们讲述 c 和 c++ 头文件如何不混合的故事......
-
建议您在格式化提取时添加错误检测/处理。此外,'cin' 是一个流(即 c++)... freopen 处理文件(c 风格)。
标签: c++ visual-studio compiler-errors stdio