• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak debugować program w C np. w Dev-C++ z dołączanym plikiem .txt

Object Storage Arubacloud
+2 głosów
1,298 wizyt
pytanie zadane 6 kwietnia 2015 w C i C++ przez KowalskiMateusz.pl Użytkownik (900 p.)

Jak debugować program w Dev-c++, który czyta plik tekstowy w trakcie pracy. Przy normalnym uruchomieniu robię tak
 zadanie.exe <in.txt

jak uwzględnić tan plik wejściowy przy debugowaniu

Przejrzałem helpa i nie było tam o tym mowy. Natomiast jest możliwość uruchomienia z jakimś parametrami do main'a? No w każdym razie nie wiem.

Jeśli się nie da to w czym jestem w stanie to zrobić.
Z góry dzięki pozdrawiam Mateusz

4 odpowiedzi

0 głosów
odpowiedź 6 kwietnia 2015 przez Wirus Stary wyjadacz (14,000 p.)

wprowadzanie parametrów dla maina to: 

int main(int argc char *argv )

 

komentarz 6 kwietnia 2015 przez KowalskiMateusz.pl Użytkownik (900 p.)
Dzięki za odpowiedź

zapewne argc to licba podanych parametrów a argv to wskażnik na na pierwszy element tablic z podanymi parametrami przez użytkownika tylko jak to wykorzystać, aby załadować plik txt na wejście?
0 głosów
odpowiedź 6 kwietnia 2015 przez hit02 Nałogowiec (33,970 p.)

Mateusz, z kąd ja cię kojarzę.laugh

Normalnie uruchamiasz program z konsoli, przekierowując plik na strumień wejścia.

Zamiast tego możesz poprostu wkleić treść pliku do konsoli. Ewentualnie można by poszukać, jak to zrobić w gdb, (domyślny debugger w Dev-c++) ale nie miałem nigdy tego problemu, więc odpowiedzi nie znam. W sumie problem ciekawy, więc poszukam czegoś i jak mi się uda znaleźć odpowiedź, to napiszę.

komentarz 6 kwietnia 2015 przez KowalskiMateusz.pl Użytkownik (900 p.)
Dzięki za odpowiedź

Pewnie skojarzenie masz z matematyką ? albo robotami.

Wracając do pytania. Jak chciałem wkleić zawartość pliku to miałem problem po program czyta aż napotka EOF a skoro podaje pisząc ręcznie w konsoli (w szczególności wklejając) nie mogę stworzyć tego znaku. Co prawda wyczytałem że kombinacja ctr+d lub ctr+z powinno to zrobić ale nie działało.
komentarz 6 kwietnia 2015 przez hit02 Nałogowiec (33,970 p.)
To ciekawe, bo ctrl+z powinno działać. Sprawdź może, czy w konsoli polecenie "echo ctrl+z" wypisze "echo jest włączone" czy jakiś pojedyńczy znaczek, ewentualnie nic nie wypisze. Jeśli będzie komunikat, czy echo jest włączone, to ctrl+z powinno działać.
komentarz 6 kwietnia 2015 przez KowalskiMateusz.pl Użytkownik (900 p.)
jak wcisnę ctr oraz z to wyskakuje ^Z

nie reaguje na echo ctr+z
komentarz 6 kwietnia 2015 przez KowalskiMateusz.pl Użytkownik (900 p.)
dodam że ctr+c działą i przerywa program ale to jednak nie rozwiązuje problemu
komentarz 6 kwietnia 2015 przez hit02 Nałogowiec (33,970 p.)
^Z, to właśnie powinien być EOF, ale sprawdziłem w gdb i rzeczywiście są z tym problemy. Nie mogę znaleźć nic ani w pomocy Dev, ani debugera. Wydaje mi się, że przekierowanie strumieni nie jest wspierane, chociaż na pewno autorzy mogli to zrobić.

Niestety nie potrafię ci pomóc, ale możesz spróbować na przykład przerobic program tak, aby najpierw pobierał liczbę lini / bajtów / czegoś innego i wkleić do konsoli tę liczbę i plik.

Ewentualnie obsługuj pliki przez fstream, lub coś bodobnego. To na pewno będzie działać.
komentarz 6 kwietnia 2015 przez KowalskiMateusz.pl Użytkownik (900 p.)
znalazłem taki film o EOF https://www.youtube.com/watch?v=SF1ZOumSt7Q

ale dalej tego do końca nie kumam
0 głosów
odpowiedź 7 kwietnia 2015 przez szmq Pasjonat (22,770 p.)

Funkcja main jest wywołana przy starcie programu. Jeżeli chcesz, żeby program przyjął nowy argument z wiersza polecen to musisz zdefiniować main z pełną listą parametrów. C i C++ pozwalają tu na pewną dowolność. Lista parametrów może przyjąć jedną z postaci:

int main(int argc, char *argv[])

int main(int argCount, char ** argvValues )

int main(int argc, char * const argv[])

 

Wszystkie one są poprawne. Każda definiuje dwa parametry: wartość int, przechowywującą liczbę argumentów w wierszu poleceń, oraz tablicę w stylu C, przechowywującą właściwe argumenty. Te informacje wystarczą do odtworzenia argumentów przekazanych programowi przez proces rodzica(proces który wykonywał main() np powłoka konsolowa, menadżer okien)

0 głosów
odpowiedź 7 kwietnia 2015 przez Grabarz Bywalec (2,880 p.)
edycja 7 kwietnia 2015 przez Grabarz

Aby twój program mógł przyjąć parametry, funkcja main() musi przyjmować jako argumenty; liczbę całkowitą (int), określającą z iloma parametrami program został uruchomiony, oraz tablicę tablic ze znakami (char**)

int main(int argc, char* argv[])

Ilość tablic w parametrze argv jest określana przez argc. Jeśli twój program został wywołany następująco:

./program.exe parametr1 parametr2

  • argc będzie wynosiło 3, gdyż pierwszym argumentem jest zawsze ścieżka jaką użyto aby, uruchomić twój program.
  • argv[0] będzie wskazywać na ściężkę './program.exe\0'. Jeśli uruchomisz program z panelu Dev-C++, argv[0] będzie wskazywać na ścięzkę absolutną, czyli taką zaczynającą się od litery dysku i tak dalej.
  • argv[1] i argv[2] będą wskazywać na łańcuchy znaków 'parametr1\0' i 'parametr2\0'

Jeśli chcesz uruchomić program z panelu Dev-C++ z parametrami, użyj opcji 'parametry' z zakładki 'uruchom', aby je uwzględnić podczas uruchamiania. Uwaga, ustawienia parametrów się nie zapisują, a więc będziesz musiał za każdym uruchomieniem Dev-C++, ustawiać je na nowo.

EOF - End Of File, czyli tłumacząc na Polski: koniec pliku. To stan, który oznacza, że nie ma już więcej danych do odczytu ze źródła (np. pliku, strumienia stdin, urządzenia)

Podobne pytania

0 głosów
1 odpowiedź 281 wizyt
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 5 grudnia 2018 w PHP przez fejkuuu Nowicjusz (150 p.)

92,579 zapytań

141,432 odpowiedzi

319,661 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...