Мне нужно записать длинное число из input.txt в output.txt а в консоли отладки пишет "Неверный дескриптор."

#include <iostream>
#include <string.h> 
#include <stdio.h> 
using namespace std;
FILE* stream;
void il(int* a) {
    char s[100];
    cin >> s;
    a[0] = strlen(s);
    for (int i = a[0]; i > 0; i--) {
        a[i] = s[i - 1] - '0';
    }
}
int main() {
    freopen_s(&stream, "input.txt", "r", stdin);
    freopen_s(&stream, "output.txt", "w", stdout);
    int a[101];
    il(a);
    for (int i = a[0]; i > 0; i--) {
        printf("%i", a[i]);
    }
    fclose(stdin); 
    fclose(stdout);
    system("pause");
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Просто уберите это system("pause") - какой в нем смысл, тем более после ваших freopen_s. Вы закрыли стандартный ввод и вывод - вот он и не понимает, с чем имеет дело.

Можно, конечно, поменять местами строки

system("pause");
fclose(stdin); 
fclose(stdout);

только в output.txt будет записан вывод "pause" - ну, это

Для продолжения нажмите любую клавишу . . .

Вы точно этого хотите? :)

→ Ссылка