Strona 1 z 1

Problem z wczytaniem pojedynczego znaku - scanf_s()

Napisane: wtorek, 31 października 2017, 12:49
przez kunegundek
Witam wszystkich,
ostatnio postanowiłem wrócić trochę do C i się pobawić w nim trochę. Problem jednak i to dość spory napotkałem przy wczytywaniu pojedynczego znaku do zmiennej char. Robię 'na moje oko" wszystko dobrze, program się kompiluje, ale po wylosowaniu liczby przez program, pomija on tak jakby instrukcję scanf_s i zakańcza działanie programu. :/ O co może chodzić? Dodam, że pracuję w Visual Studio. Prędzej jak kombinowałem z tym, to program się wykonywał, ale nie wiedzieć czemu, wczytywał jakies krzaki, zamiast literki, która wpisywałem ("t"). :P W devcpp jak przekleiłem ten kod i użyłem jak się domyslam starszej funkcji scanf, to program działał poprawnie. Za wszelką pomoc będę wdzięczny.. <3
A oto kod programu:

Re: Problem z wczytaniem pojedynczego znaku - scanf_s()

Napisane: wtorek, 31 października 2017, 12:50
przez kunegundek
http://wklej.org/id/3283825/ - wklejone na wklej.org, bo znowu jest jakiś problem z wklejaniem kodu, w znacznikach ... :D

Re: Problem z wczytaniem pojedynczego znaku - scanf_s()

Napisane: wtorek, 31 października 2017, 14:39
przez Morfidon
Cześć,

Czemu w programowanie C++ korzystasz ze scanf_s zamiast cin?

Pozdrawiam :)

Re: Problem z wczytaniem pojedynczego znaku - scanf_s()

Napisane: środa, 1 listopada 2017, 01:46
przez kunegundek
Haha przyznaję się bez bicia, że niestety odgórnie profesorek od nas wymaga na pierwszym semestrze studiów scanf_s xD Generalnie styczność z programowaniem miałem, z reszta z Pańskimi kursami zaczynałem, ale tutaj ten scanf_s (a bardziej srodowisko Visual Studio o czym zaraz), zżera mi dużo nerwów i czasu, który wolałbym przeznaczyć na bawienie się programowaniem appek android itd... :D
Ten problem o który pytałem, już rozwiązałem, ale pojawił się nastepny, gdy chciałem na luzaku napisać kod ten sam tylko z zapisywaniem do tablicy i wypisywaniem z niej, co zakładam, że będzie na następnych laborkach (profesorek mówił, że będzie coś podobnego, ale z tablicami). I co się okazało? że kod, który tutaj podlinkuję, w VisualStudio, którego używamy na uczelni, nie kompiluje się, a o to screen z debuggera:
Obrazek
A znowu ten sam kod (no może dokładnie nie ten sam, bo znowu zamieniłem scanf_s na scanf, ale jednak te najistotniejsze fragmenty dla błędów są takie same), wrzucony do devcpp kompiluje się bez problemu i śmiga pięknie... :D Jakieś rady, o co może chodzić? Czy może wziąć się za radykalne środki i ukatrupić profesorka, za to, że wymaga od nas Visuala (jakby chociaż Code::Blocks nie mógł być, z którym nigdy nie miałem problemów :O)? :D

Oto kodzik: http://wklej.org/id/3284293/

Za wszelkie rady serdeczne dzięki <3 :D

Edit. No tak, po prostu kompilator powiązany z Visualem, nie przepuszcza tworzenia tablicy w ten sposób, tylko trzeba zadeklarować rozmiar stałą... Po stworzeniu zmiennej const int a i przypisaniu do niej zmiennej ile i tak nie działa :D

Re: Problem z wczytaniem pojedynczego znaku - scanf_s()

Napisane: środa, 1 listopada 2017, 10:27
przez Morfidon
Nie możesz zrobić coś takiego jak tu:

Code: Zaznacz cały

int wylosowane[ile];
musisz dynamicznie zaalokować pamięć przy pomocy operatora new, a później zwolnić ją przy pomocy delete :)

Re: Problem z wczytaniem pojedynczego znaku - scanf_s()

Napisane: środa, 1 listopada 2017, 13:25
przez kunegundek
Haha, czyli moje nocne przemyślenia na temat właśnie alokacji pamięci się potwierdziły. :D Po napisaniu tej odpowiedzi zaczałem się nad tym zastanawiać, ale nie byłem pewien, bo w C++ nie pisałem nic kupę czasu, bo ostatnio bawiłem się tylko java i php, to i rozleniwiłem się pod kątem dbania o naszą pamięć w PC :D Cóż, lecę obejrzeć lekcję o alokacji pamięci i przerabiam ten kod, jak pojawią się jakies problemy znowu (oby nie), to wrócę tutaj, ale mam nadzieję, że jednak już teraz będzie mi szło wszystko sprawnie i nie będę musiał się przejmować zbytnio cpp, które aktualnie nie jest mi potrzebne do żadnych projektów, co mam w planach... :D Dzięki Panie Arku! :D