invalid conversion from 'char' to 'char**'

invalid conversion from 'char' to 'char**'
0

Witam mam powyższy błąd w poniższym programie :D Polecenie: "W ciele funkcji int test () wywołana jest funkcja encrypt( char code[12] ) szyfrująca wartości elementów tablicy code[12] i konwertująca je na jedną wartość typu int , którą funkcja ma zwrócić.
Zadeklaruj tablicę char code[12] oraz zainicjuj jej elementy kolejnymi znakami hasła "kill them all". Pomiń spacje. Niewykorzystane elementy tablicy zainicjuj wartością 0." Program poniżej.

Kopiuj
 int encrypt( char str[] );

int test()
{
    char code[12] = {'k', 'i', 'l', 'l', 't', 'h', 'e', 'm', 'a', 'l', 'l', 0};

    encrypt( code[12] );
    
    return 0;
} 

Najlepsze jest to że kilka dni temu dokładnie ten sam kod działał bez problemu :D

MI
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 5 lat
  • Postów:243
3
Kopiuj
encrypt(code)

powinno być, bo jako argument przekazujesz tablicę.

Kopiuj
encrypt(code[12])

oznacza że przekazujesz jako argument element tablicy o indeksie 12 (który nie istnieje, bo tablica twoja ma indeksy od 0 do 11)

edytowany 3x, ostatnio: Mikilll
0

Zmieniłam na 11. Niestety niezależnie od tego co wpiszę błąd nadal występuje :/ Wrzuciałam to też w pętlę...

Kopiuj
 for(int i = 0; i < 12; i++)
        encrypt( code[i] );

... i niestety dalej to samo :<

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

przeciez wyzej dostales dokldana odpowiedz. Czytaj dopoki nie zrozumiesz (tam masz rowniez gotowca)
Nie da sie prosciej i jasniej, wiec czytaj dopoki nie zrozumiesz.

edytowany 1x, ostatnio: fasadin
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

Masz przekazać tablicę, nie element tablicy.

Kopiuj
encrypt(code)

I raz, a nie 12 razy.

0
twonek napisał(a):

Masz przekazać tablicę, nie element tablicy.

Kopiuj
encrypt(code)

I raz, a nie 12 razy.

Kopiuj
int encrypt( char* str[] );

int test()
{
    char code[12] = {'k', 'i', 'l', 'l', 't', 'h', 'e', 'm', 'a', 'l', 'l', 0};

    encrypt( code );
    
    return 0;
} 

Tym razem błąd: cannot convert 'char*' to 'char**' for argument '1' to 'int encrypt(char**)'

twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

Dlaczego zmieniasz dobry kod w zły? Miałeś na początku

Kopiuj
int encrypt(char str[]);
fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

moze zacznij czytac jakis normalny kurs? Bo w ogole nie czytasz komunikatow kompilatora

Kopiuj
char code[12] = {'k', 'i', 'l', 'l', 't', 'h', 'e', 'm', 'a', 'l', 'l', 0};

na koncu masz 0 zamiast znaku

do tego zmieniles deklaracje funkcji!

edytowany 1x, ostatnio: fasadin
0

Nie mam zielonego pojęcia skąd tam się wziął ten wskaźnik :D. Dzięki za pomoc :D

0
fasadin napisał(a):

moze zacznij czytac jakis normalny kurs? Bo w ogole nie czytasz komunikatow kompilatora

Kopiuj
char code[12] = {'k', 'i', 'l', 'l', 't', 'h', 'e', 'm', 'a', 'l', 'l', 0};

na koncu masz 0 zamiast znaku

do tego zmieniles deklaracje funkcji!

Proponuję zacząć czytać polecenia ze zrozumieniem ;) Poza tym 0 w tym przypadku oznacza "puste miejsce" czy też "brak znaku" mam wrażenie że nie masz pojęcia o czym mówisz :>

A użytkownikowi twonek niezmiernie dziękuję za świetną, trafną, precyzyjną, i błyskawiczną pomoc :>

MI
A czym się różni post twonka od mojego?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.