ciągi znaków dla get.cin(...,...).get(); a pętla
Ostatnio zmodyfikowano 2017-10-06 17:15
damian955 Temat założony przez niniejszego użytkownika |
ciągi znaków dla get.cin(...,...).get(); a pętla » 2017-10-06 16:02:56 Witam, mam kod: #include<iostream> using namespace std; int main() { short l = 10; char ciag[ l ]; bool flagaCl; while( flagaCl != 1 ) { cout << "Wpisz cos: "; cin.get( ciag, l ); cin.get(); system( "cls" ); cout << "Wpis:\"" << ciag << "\"" << endl; flagaCl = cin.good(); system( "pause" ); } return 0; }
Jak dam enter to nie można już nic wpisać. Chyba chodzi o znak zerowy tylko nie wiem jak to naprawić. Nakieruje ktoś? |
|
Kinexity |
» 2017-10-06 16:11:34 1. Nie wiem jak to się w ogóle kompiluje - używasz zmiennej, która nie jest const do określenia liczby komórek tablicy. 2. Na początku pętli porównujesz z nie zainicjowaną zmienną. 3. Spróbuj dodać komórkę o wartości 0 na końcu tablicy |
|
damian955 Temat założony przez niniejszego użytkownika |
» 2017-10-06 16:27:26 1. Nie wiem czemu kompiluje bez consta, ale jakoś działa. 2. Dla typu bool każda zmienna przyjmuje na start 0. 3. To nic nie daje. Sprawdzałem. 4. Masz tu poprawiony kodzik tak samo działa jak tamten. #include<iostream> using namespace std; int main() { const short l = 20; char ciag[ l ]; bool flagaCl; while( flagaCl != 1 ) { ciag[ 19 ] = '\0'; cout << "wpisz cos: "; cin.get( ciag, l ).get(); system( "cls" ); cout << "wpis: \"" << ciag << "\"" << endl; system( "pause" ); } return 0; }
|
|
maly7 |
» 2017-10-06 16:50:07 A próbowałeś czyścić bufor? cin.clear i cin.ignore? A skąd to info o bool? Wywołuje sobie kod: bool flagaCl; bool flagaCl2; bool flagaCl3; cout << flagaCl << endl; cout << flagaCl2 << endl; cout << flagaCl3 << endl; I dostaje wynik: 0 65 194 |
|
damian955 Temat założony przez niniejszego użytkownika |
» 2017-10-06 17:15:16 Myslałem ze tak jest z boolem bo sobie go wywołałem i był na zero od razu. Dzięki cin.ignore naprawił problem kod taki jest: #include<iostream> using namespace std; int main() { const short l = 20; char ciag[ l ]; bool flagaCl = 0; while( flagaCl != 1 ) { system( "cls" ); ciag[ 19 ] = '\0'; cout << "wpisz cos: "; cin.get( ciag, l ).get(); flagaCl = cin.good(); if( flagaCl == 0 ) { cin.clear(); cin.ignore(); } cout << "wpis: \"" << ciag << "\"" << endl; system( "pause" ); } return 0; }
Może ktoś skorzysta na moim błędzie. |
|
« 1 » |