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

[C++] Zamiana char* na int. Błąd.

Ostatnio zmodyfikowano 2015-11-30 19:57
Autor Wiadomość
vancarek
Temat założony przez niniejszego użytkownika
[C++] Zamiana char* na int. Błąd.
» 2015-11-30 19:38:54
Cześć,
Mam do napisania projekt na zaliczenie - warcaby. Utknąłem w takiej funkcji. Ma ona opisywać ruch pierwszego z graczy. Wiem, nie jest dokończona. Wg tej funkcji gracz miałby wpisywać wiersz literę, kolumnę cyfrę i kierunek, który też jest określony przez liczbę. Utknąłem przy zamianie char* na int. "i" oraz "j" mają oznaczać miejsce w tablicy/na polu gry. Od i, j i ruch chcę utworzyć warunki, po których pionek x się przesunie.

Próbowałem już na różne sposoby zamiany char* na int. Znalazłem atoi, które wydawało się perfekcyjne w zastosowaniu, jednak, gdy przed atoi dodawałem cin, którym miała być wprowadzona zmienna dla atoi program padał.

Pilnie proszę o pomoc ! :)

C/C++
void ruchgracza1( poleGry & P ) {
    char * wiersz;
    int i, j, ruch;
    cout << "Ruch x. Wybierz pionek." << endl;
    cout << "Wiersz:";
    cin >> wiersz;
    if( wiersz == "A" ) i = 0;
    else if( wiersz == "B" ) i = 1;
    else if( wiersz == "C" ) i = 2;
    else if( wiersz == "D" ) i = 3;
    else if( wiersz == "E" ) i = 4;
    else if( wiersz == "F" ) i = 5;
    else if( wiersz == "G" ) i = 6;
    else if( wiersz == "H" ) i = 7;
   
    cout << "Kolumna:";
    cin >> j;
    cout << "Wybierz kierunek:";
    cin >> ruch;
}

P-141189
Pawlo3
» 2015-11-30 19:42:44
Jednak, gdy przed atoi dodawałem cin, którym miała być wprowadzona zmienna dla atoi program padał.
Padał, bo nie zaalokowałeś pamięci dla char * wiersz!
Musisz zrobić tak:
char * wiersz = malloc( /*Tu podaj ilość znaków*/ );

Utknąłem przy zamianie char* na int.
Przy analizie twojego kodu pomyślałem, że skoro używasz JEDNEGO znaku, mógłbyś zrobić:
char wiersz;
Potem mógłbyś zamienić w if - ach cudzysłowy na apostrofy (').

wiersz=="B"
Tak nie da się porównywać łańcuchów typu char *!
Musisz użyć funkcji strcmp().[/cytat]
P-141190
pekfos
» 2015-11-30 19:48:39
C/C++
char * wiersz;
cin >> wiersz;
Jak chcesz zapisać jakiekolwiek dane do pamięci, która nie istnieje?

C/C++
else if( wiersz == "D" ) i = 3;

To nie jest porównanie tekstów.

Najprościej poprawić oba problemy, zmieniając typ zmiennej wiersz na std::string.
P-141191
vancarek
Temat założony przez niniejszego użytkownika
Zamiana char* na int
» 2015-11-30 19:57:51
Zamiana na string pomogła.
Dzięki za pomoc.
P-141192
« 1 »
  Strona 1 z 1