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

ciągi znaków dla get.cin(...,...).get(); a pętla

Ostatnio zmodyfikowano 2017-10-06 17:15
Autor Wiadomość
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:
C/C++
#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ś?
P-165481
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
P-165482
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.

C/C++
#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;
}
P-165483
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:
C/C++
bool flagaCl;
bool flagaCl2;
bool flagaCl3;
cout << flagaCl << endl;
cout << flagaCl2 << endl;
cout << flagaCl3 << endl;

I dostaje wynik:
0
65
194
P-165484
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:

C/C++
#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.
P-165485
« 1 »
  Strona 1 z 1