#c #visual-studio-code #freopen
#c #visual-studio-code #freopen
Вопрос:
Я пытаюсь прочитать ввод и вывод из двух отдельных текстовых файлов на C .
Код (test.cpp ):
#include<bits/stdc .h>
using namespace std;
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int x = 6 ;
cin >> x;
cout << x;
}
input.txt:
1
output.txt пусто
В VS code при использовании терминала и записи команд :
g test.cpp
.a.exe
данные из входного текстового файла считываются, а данные записываются в выходной текстовый файл.
Но если я использую отладку, входные и выходные файлы не распознаются программой. Ввод и вывод не считываются / не записываются. Ошибка не отображается, и программа просто завершается.
Результат после использования отладки
запустите.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g .exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin",
"environment": [],
"console": "externalTerminal",
"MIMode": "gdb",
"miDebuggerPath": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C : g .exe build active file"
}
]
}
Я хочу, чтобы ввод / вывод из текстового файла также выполнялся во время отладки.
Комментарии:
1. Текущий рабочий каталог, «cwd», должен быть каталогом, содержащим ваши файлы.
Ответ №1:
Хорошо, я понимаю, что здесь происходит. В launch.json
файле "cwd"
значением является путь к текущему рабочему каталогу запускаемого или отлаживаемого процесса, из которого по умолчанию считываются входные файлы, а выходные файлы записываются и записываются.
Вы должны установить его в каталог, в котором находятся файлы, с которыми вы работаете.
Комментарии:
1. Я понял это после некоторой головной боли. Спасибо.