почему freopen () не работает на Microsoft Visual Studio, но работает на CodeBlocks? - PullRequest
0 голосов
/ 12 марта 2020

Я начал C ++ не так долго и так долго искал различные способы чтения и записи из / в файлы безрезультатно, пока не попробовал его на CodeBlocks, который работал .. Изображения прилагаются ниже, чтобы указать на возможные ошибки в коде, хотя один и тот же код использовался в обоих приложениях.

Код ошибки: Severity Code Description Project File Line Suppression State Suppression State Error C4996 'freopen': This function or variable may be unsafe. Consider using freopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Codeforces C:\Users\owamoyo\source\repos\Codeforces\Codeforces.cpp 6

Code Blocks

#include<bits/stdc++.h>

using namespace std;

int main() {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int n; cin >> n;
    while (n--) {
        int x; cin >> x;
        cout << x << " ";
    }
    return 0;
}

MS Visual Studio

#include<bits/stdc++.h>

using namespace std;

int main() {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int n; cin >> n;
    while (n--) {
        int x; cin >> x;
        cout << x << " ";
    }
    return 0;
}

Ответы [ 2 ]

2 голосов
/ 12 марта 2020
  • Прежде всего добавьте это в свой код
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
  • , затем добавьте input.in и output.out в ваш проект
  • , затем щелкните правой кнопкой мыши в обозревателе решений выберите
    • Свойства
      • Конфигурации
        • C / C ++
          • Препроцессор, затем отредактируйте Определения препроцессора и измените его на _CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)

Steps

1 голос
/ 12 марта 2020

Просто используйте freopen_s или go до Проект-> Свойства-> Свойства конфигурации-> C / C ++ -> Препроцессор-> Определения препроцессора и добавьте _CRT_SECURE_NO_WARNINGS

Пример:

FILE *input;

errno_t e = freopen_s(&input, "input.txt", "w", stdin);
if(e)
    /* Handle that error(cannot reopen) */;

...

fclose(input);
...