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

Jeśli udało się odczytać wartość char

Ostatnio zmodyfikowano 2017-07-27 14:52
Autor Wiadomość
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.

C/C++
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;
}
P-163579
pekfos
» 2017-07-26 13:39:20
Twoje porównanie nie ma sensu. Porównujesz tablicę znaków z jednym znakiem.
P-163581
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
P-163582
nanoant20
» 2017-07-26 18:33:47
czy moze o to ci chodzi

C/C++
cout << "Podaj nazwisko: ";
cin.getline( ch, 40 );
if( ch[ 0 ] == '\0' )
     cout << "0";
else
     cout << "1";



P-163589
latajacaryba
» 2017-07-27 12:28:58
[do usunięcia]
P-163608
pekfos
» 2017-07-27 14:36:48
Sprawdzasz więc, czy masz po prostu pustego stringa, czyli coś takiego:
C/C++
if( str[ 0 ] = '\\0' )
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.
P-163614
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...
P-163616
« 1 »
  Strona 1 z 1