Jeszcze troszkę wykopię:
WriteConsoleOutputCharacterA(GetStdHandle(STD_OUTPUT_HANDLE), kursor, 80 * 25 - 1, coord, &cWritten);
Błąd jest w drugim argumencie tej funkcji. Ponieważ owa funkcja przyjmuje argument typu
const char *
, a nie zwykłą tablicę char x[][];
By to naprawić trzeba wykonać jeden z dwóch zabiegów, albo zrzutować argument "kursor" do char* w ten sposób:
WriteConsoleOutputCharacterA(GetStdHandle(STD_OUTPUT_HANDLE),(const char*)kursor, 80 * 25 - 1, coord, &cWritten);
Kompilator to łyknie, ale sam program raczej nie zadziała, bo praktycznie zawsze zabawa wskaźnikami w ten sposób powoduje wyjście poza pamięć.
Albo sam argument "kursor" zamienić na tablicę wskaźników... to nie jest zbyt bystry pomysł jeśli się nigdy nie korzystało z tablicy, ale można pomóc:
Zamienić:
char kursor[25][80];
na:
const char *kursor;
Oczywiście, kompilator łyknie, a program się nie wysypie, ale straci całkowicie swoją funkcjonalność ponieważ taki zapis:
kursor[i][j] = '_';
Nie będzie mieć sensu w przypadku deklarowania wskaźnika na
char
.
Reasumując:
Fragment kodu Pana adf cośtam:
char tablica[25][80]; // tablica wszystkich znaków
DWORD cWritten;
COORD coord= { 0, 0 };
WriteConsoleOutputCharacterA(GetStdHandle(STD_OUTPUT_HANDLE), tablica, 80 * 25 - 1, coord, &cWritten);
jest BŁĘDNA, bo podaje argument typu dwuwymiarowej tablicy znaków, do funkcji, która za argument przyjmuje CIĄG znaków, a nie MACIERZ!
Więc panie bufonie wygląda na to, że to ty nie umiesz wywołać funkcji skoro podajesz złe argumenty, nie starając się nawet ich zrzutować co i tak skończyłoby się out of range i wysypaniem programu.
Nie wiem, może na szybko wziąłeś jakiś pierwszy lepszy poradnik przepisałeś z niego wszystko krok po kroku, a potem chciałeś zademonstrować jak to wspaniałomyślnie wykorzystasz "skomplikowaną" funkcję do rozwiązania trywialnego problemu, samemu popełniając błąd przy podawaniu argumentów do funkcji zmieniając typ const char * na char ** brawo...