Jeśli udało się odczytać wartość char
Ostatnio zmodyfikowano 2017-07-27 14:52
Streamline Temat założony przez niniejszego użytkownika |
Jeśli udało się odczytać wartość char » 2017-07-26 13:34:33 Cześć Funkcja ma przypisywac 'b' wartosc '0' jezeli do "ch" podano enter zamiast ciagu znakow lub cyfry. Ten ciąg znaków może być dwoma wyrazami. Problem w tym, że nie wiem w jaki sposób tego dokonać. W tej chwili, w każdej sytuacji(czy podam tekst czy nie) zawsze otrzymuję wartość 1. void setgolf( golf & g ) { char ch[ 40 ]; int b; std::cout << "Podaj nazwisko: "; std::cin.getline( ch, 40 ); if( ch == '\n' ) { b = 0; } else { b = 1; } std::cout << "Podaj handicap: "; std::cin >> g.handicap; std::cout << b; }
|
|
pekfos |
» 2017-07-26 13:39:20 Twoje porównanie nie ma sensu. Porównujesz tablicę znaków z jednym znakiem. |
|
latajacaryba |
» 2017-07-26 14:29:19 znak nowej linii(entera): '\n' c-string którym jest tylko znak nowej linii: "\n" Różnica? W c-stringu masz na końcu znak NULL. Dzięki temu znakowi wiadomo, że w tym miejscu jest koniec stringa Więcej tutaj |
|
nanoant20 |
» 2017-07-26 18:33:47 czy moze o to ci chodzi cout << "Podaj nazwisko: "; cin.getline( ch, 40 ); if( ch[ 0 ] == '\0' ) cout << "0"; else cout << "1";
|
|
latajacaryba |
» 2017-07-27 12:28:58 [do usunięcia] |
|
pekfos |
» 2017-07-27 14:36:48 Sprawdzasz więc, czy masz po prostu pustego stringa, czyli coś takiego:
|
Co?! | Natomiast, jeżeli chcesz sprawdzić, czy jedynym znakiem w stringu (przypominam, że mówiąc jedyny mam na myśli jedyny oprócz null'a, który to null jest tam zawsze) jest enter, robisz coś takiego: |
W jakim dokładnie scenariuszu miałbyś tam tylko znak nowej linii? getline kończy na \n ale go nie zapisuje do stringa. | The delimiting character is the newline character ('\n') for the first form, and delim for the second: when found in the input sequence, it is extracted from the input sequence, but discarded and not written to s. |
Brawo, napisałeś całą kupę bzdur. |
|
latajacaryba |
» 2017-07-27 14:52:06 W takim razie przepraszam autora, dawno nie operowałem na tablicach znaków i wiedza wywietrzała. Natomiast wydawało mi się poprawne sprawdzanie czy pierwszym znakiem cstringa jest null, bo jest on pusty. A co do sprawdzania znaku nowej linii, to nie pomyślałem, że przecież pobieranie znaków kończy sie na enterze... |
|
| « 1 » |