logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[c] Przekazywanie parametrów do funkcji, złe parametry funkcji ?

juniorowy 09 Cze 2011 01:47 2381 4
REKLAMA
  • #1 9591950
    juniorowy
    Poziom 10  
    Posty: 17
    Witam serdecznie.
    Piszę program w ANSI C na temat kodowania i dekodowania wpisywanego z klawiatury zdania. Zdanie to jest zapisywane do pliku jako oryginał a także (po uruchomieniu funkcji rc4) zapisywane jako kod. Najprawdopodobniej mam problem z przekazywaniem parametru z funkcji main do funkcji rc4. Pojawia się błąd access volation. Nie jestem w ogóle pewny czy jest możliwa w tym języku taka deklaracja tablic. Sama funkcja rc4 działa na pewno w c++ (zamiast malloc używa się new). Bardzo proszę o pomoc i z góry dziękuję.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9591955
    GSM
    Poziom 25  
    Posty: 543
    Pomógł: 72
    Ocena: 16
    Witam,

    kod jest mało czytelny, popraw formatowanie bo na to się patrzeć nie chce :!:
    Jakieś dziwoty ze wskaźnikami tam widzę, np. przekazywanie do fprintf() referencji do wskaźnika.
    Istne Cuda na patyku - popraw i pokaż ponownie.

    Pozdrawiam,
    GSM
  • REKLAMA
  • #3 9591964
    juniorowy
    Poziom 10  
    Posty: 17
    Proszę wybaczyć moje formatowanie i ogólną niewiedzę. Nie jestem zbyt dobry w programowaniu, tym bardziej we wskaźnikach. Zawsze jakoś udawało mi się, że jeśli nie działa *zmienna, to może zadziała **zmienna, a jak nie to w drugą stronę :) Gdzie dokładnie widzisz błąd? Bardzo bym Cię prosił o dopisywanie fragmentów kodów do odpowiedzi, gdyż nie mam takiej wiedzy żeby wiedzieć o którą linijkę chodzi. Dziękuję.
  • REKLAMA
  • #4 9591966
    GSM
    Poziom 25  
    Posty: 543
    Pomógł: 72
    Ocena: 16
    Wszystkie printf i scanf z parametrem :roll:
    Przekazujesz im referencje wskaźników a powinieneś sam wskaźnik...

    Pozdrawiam,
    GSM
  • #5 9592296
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    Dodatkowo, zdecyduj się, czy tablicę ByteOutput przydzielasz w funkcji wołającej i przekazujesz do rc4() (lepsze rozwiązanie), czy przydzielasz wewnatrz rc4() i zwracasz przez wskaźnik.
    Obecnie (z zakomentowaną funkcja malloc) wskaźnik temp pokazuje w krzaki (nie jest mu nadawana wartość początkowa), więc odwołania do niego z dużym prawdopodobieństwem generują błąd.
    Jeżeli ByteOutput przekazujesz, to albo temp ustaw początkowo na wartość ByteOutput, albo, jeszcze lepiej, wywal wskaźnik temp i po prostu indeksuj bezpośrednio ByteOutput.
    Wywal nieużywane zmienne, bo w tym stanie kodu to nawet ciężko się połapać, co miałeś na myśli.

    juniorowy napisał:
    Zawsze jakoś udawało mi się, że jeśli nie działa *zmienna, to może zadziała **zmienna, a jak nie to w drugą stronę :)

    "Informatyka doświadczalna" :D:?: Zdecydowanie nie polecam takiego podejścia...
REKLAMA