Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przepisywanie danych z tablicy char do tablicy struktur

Ostatnio zmodyfikowano 2014-11-19 17:57
Autor Wiadomość
Malina94
Temat założony przez niniejszego użytkownika
Przepisywanie danych z tablicy char do tablicy struktur
» 2014-11-19 17:18:28
Chciałam przepisać zawartość tablicy do moich pól:
C/C++
char tablica[ 81 ];
char * wsk_tablica = & tablica[ 0 ];
C/C++
for( int i = 0; i < SIZE; i++ ) {
    for( int j = 0; j < SIZE; j++ ) {
        plansza[ i ][ j ].pole = wsk_tablica;
        wsk_tablica++;
    }
}
(Plansza jest tablicą struktur, w której "pole" jest zmienną typu char*. )

Ale gdy sprawdziłam efekt, okazało się, że np. w plansza[0][0].pole mam wpisane wszystkie 81 znaków z tablicy, zamiast jednego, tablica[0]. Wiem, że przesuwać się po tablicy wskaźnikiem mogę w taki sposób:
*(wsk_tablica+=w);
gdzie w to typ int i mogę go sobie zwiększać. Idąc tym tropem chciałam zrobić takie coś:
C/C++
for( int i = 0; i < 9; i++ ) {
    for( int j = 0; j < 9; j++ ) {
        plansza[ i ][ j ].pole = *( wsk_tablica += w );
        w++;
    }
}
Ale otrzymuję błąd konwersji z char do char*. Jak to poprawnie zapisać? Chcę aby plansza[0][0].pole zawierało znak z tablica[0] itd...
P-120989
Monika90
» 2014-11-19 17:49:12
Nie wiem dlaczego chcesz używać tych wskaźników char*, to jest zbędna komplikacja.

Jeżeli drukujesz to w taki sposób:
cout << plansza[ 0 ][ 0 ].pole;

to nic dziwnego że wyświetla się cała zawartość tablicy (a może i coś więcej),
żeby wyswietlić tylko ten znak na który pokazuje wskaźnik zrób tak:
cout << * plansza[ 0 ][ 0 ].pole;


Na dodatek trzeba zadbać o to by tablica tablica wciąż istnaiała, tak długo jak używasz wskaźników do jej elementów.
P-120992
Malina94
Temat założony przez niniejszego użytkownika
» 2014-11-19 17:56:10
No wiem, że komplikacja. Możliwe że to zlikwiduję, ale na razie nie wiedziałam jak coś ogarnąć bez używania ich. Ale dzięki za pomoc :)
P-120993
kubawal
» 2014-11-19 17:57:49
C/C++
for( int i = 0; i < SIZE; i++ ) {
    for( int j = 0; j < SIZE; j++ ) {
        plansza[ i ][ j ].pole = wsk_tablica;
        wsk_tablica++;
    }
}

C/C++
for( int i = 0; i < SIZE; i++ ) {
    for( int j = 0; j < SIZE; j++ ) {
        plansza[ i ][ j ].pole = wsk_tablica[ 0 ];
        wsk_tablica++;
    }
}
P-120994
« 1 »
  Strona 1 z 1