• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [C++] Błąd wczytywania znaków ciągu - tablica char

Object Storage Arubacloud
–1 głos
773 wizyt
pytanie zadane 4 stycznia 2019 w C i C++ przez Piotr Lis Obywatel (1,310 p.)
zamknięte 5 stycznia 2019 przez Piotr Lis

Witam,

 

Tak więc, mam mały problem, otóż otrzymuję błąd, a w zasadzie wyjątek, w poniższej funkcji:

 

int assignZeroes(char *board[][3])
{
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			*board[i][j] = NOT_OCCUPIED;	//assigns '0' to these chars (w tej linii wystepuje rzeczony wyjątek)
		}
	}

	return 0;
}

Ten podprogram wykorzystywany jest w innej funkcji o następującej treści:

void assignAndCheck(char *board[][3])
{
	assignZeroes(board);	//assigns '0' to all the chars
	if (ifBoardOccupied) assignAndCheck(board);	//checks and unless everything is in order repeats the assignZeroes function
}

Pierwszym moim strzałem było przypisanie wartości z poza zasięgu tablicy, jednakże nie widzę tu błędu, a debugger ukazał mi treść "Błąd odczytywania znaków ciągu." w miejscach, gdzie powinny się znajdować właśnie, zdefiniowane wyżej dyrektywą #define NOT_OCCUPIED '0', zero.

Z góry dziękuję za wszelkie odpowiedzi!

komentarz zamknięcia: Do rozwiązania doszedłem sam - problem nie leżał w funkcji, ale sposobie alokacji tablicy

2 odpowiedzi

0 głosów
odpowiedź 4 stycznia 2019 przez RafalS VIP (122,820 p.)
char *board[][3]

nie wiem czy miałes na mysli przekazanie tablicy wskaznikow na char nx3. Polecam taką stronke do zabawy z pointerami: https://cdecl.org

Pewnie chciałes po prostu przesłać tablice charow 3x3. Jesli tak to wystarczy:

char board[][3]
komentarz 4 stycznia 2019 przez Piotr Lis Obywatel (1,310 p.)
Jeżeli chodzi o przesłanie wskaźnika do funkcji to mam świadomość, że nie jest to wymagane i nie pisałem pełnej formy, jednakże podając wskaźnik, wskazujący na tablicę jako argument wymaga zadeklarowania wskaźnika przede wszystkim, jest to więc wymagane.
–2 głosów
odpowiedź 4 stycznia 2019 przez In1th Początkujący (280 p.)
Jeżeli chodzi Ci o tablice 3x3 to brakuje w pierwszych nawiasach kwadratowych 3.
1
komentarz 4 stycznia 2019 przez Piotr Lis Obywatel (1,310 p.)
Nie jest to wymagane, do wykonania poprawnych obliczeń co do lokacji danych w komórkach pamięci wystarczy jedynie drugi parametr, ze względu na ich ułożenie w pamięci.

Podobne pytania

0 głosów
1 odpowiedź 4,161 wizyt
pytanie zadane 28 listopada 2015 w C i C++ przez agre Użytkownik (550 p.)
+1 głos
2 odpowiedzi 2,030 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez Kamyyylo Początkujący (460 p.)
0 głosów
3 odpowiedzi 181 wizyt
pytanie zadane 29 grudnia 2016 w C i C++ przez qwerty Początkujący (380 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...