Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

juniorowy 09 Cze 2011 01:47 1925 4
  • #1 09 Cze 2011 01:47
    juniorowy
    Poziom 8  

    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
    Zaloguj się, aby zobaczyć kod

    0 4
  • #2 09 Cze 2011 01:56
    GSM
    Poziom 25  

    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

    0
  • #3 09 Cze 2011 02:09
    juniorowy
    Poziom 8  

    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ę.

    0
  • #4 09 Cze 2011 02:11
    GSM
    Poziom 25  

    Wszystkie printf i scanf z parametrem :roll:
    Przekazujesz im referencje wskaźników a powinieneś sam wskaźnik...

    Pozdrawiam,
    GSM

    0
  • #5 09 Cze 2011 09:42
    szelus
    Specjalista - Mikrokontrolery

    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...

    0