Przepisywanie danych z tablicy char do tablicy struktur
Ostatnio zmodyfikowano 2014-11-19 17:57
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: char tablica[ 81 ]; char * wsk_tablica = & tablica[ 0 ];
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ś: 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... |
|
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. |
|
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 :) |
|
kubawal |
» 2014-11-19 17:57:49 for( int i = 0; i < SIZE; i++ ) { for( int j = 0; j < SIZE; j++ ) { plansza[ i ][ j ].pole = wsk_tablica; wsk_tablica++; } }
|
for( int i = 0; i < SIZE; i++ ) { for( int j = 0; j < SIZE; j++ ) { plansza[ i ][ j ].pole = wsk_tablica[ 0 ]; wsk_tablica++; } }
|
|
« 1 » |