Witam, mam pewien problem, mam napisany program w C++ jako zadanie na studiach. Program wczytuje z pliku txt znaki do tablicy char i wypisuje na konsoli terminala tą tablicę ze znakami w odwrotnej kolejności z warunkiem, że cyfry należy zamienić 0 na 9, 1 na 8 i tak dalej. Na wejściu jest pliku txt i liczba znaków w tym pliku.
Przykładowe działanie: digits.exe 10 input.txt
input: a0b1c2d3e4
output: 5e6d7c8b9a
Program mam już napisany i problem rozwiązuje, ale martwi mnie log z terminala po uruchomieniu. Wynik się zgadza, ale po ostatnim znaku dobry kawałek w dół terminala jest dużo śmieci, które nie wiem z czego wynikają. Dopiero zaczynam przygodę z programowaniem. Mógłby ktoś zerknąć na kod i wytłumaczyć mi w czym jest problem i jak go naprawić?
#include <iostream>
#include <cstdlib>
#include <fstream>
int main(int argc, char *argv[]) {
int n = atoi(argv[1]);
std::ifstream input_file(argv[2]);
char *T = (char*)std::malloc(n * sizeof(char));
if (input_file.is_open()) {
input_file.getline(T, n + 1); }
for (int i = 0; i < n ; i++) {
std::cout << T[i]; }
// std::cout << std::endl;
// std::cout << static_cast<int>(T[50]);
std::cout << std::endl;
for (int i = n - 1; i <= n - 1; i--) {
int number_sign;
number_sign = static_cast<int>(T[i]);
for (int k = '0'; k <= '9'; ++k) {
if (number_sign == k) {
if (number_sign >= '0' && number_sign <= '9') {
T[i] = static_cast<char>('9' - (number_sign - '0')); }}
} std::cout << T[i]; }
input_file.close();
free(T);
}