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

Problem z 'gets()'

Ostatnio zmodyfikowano 2009-02-03 20:31
Autor Wiadomość
malan
Temat założony przez niniejszego użytkownika
Problem z 'gets()'
» 2009-02-03 18:32:43
C/C++
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    char imie[ 25 ], nazwisko[ 25 ], firma[ 50 ], adres[ 50 ], telefon[ 50 ];
    int a, b, c, d, e, f, g;
    cout << "Podaj imie-" << endl;
    cin >> imie;
    a = strlen( imie );
    cout << "Podaj nazwisko-" << endl;
    cin >> nazwisko;
    b = strlen( nazwisko );
    cout << "Podaj nazwe firmy-" << endl; /*Mógłby mi ktoś powiedzieć czemu program to 'omija', bo ja już nie wiem. Wszystkiego próbowałem*/
    gets( firma );
    c = strlen( firma );
    cout << "Podaj adres firmy-" << endl;
    gets( adres );
    d = strlen( adres );
    cout << "Podaj telefon (swoj/firmowy)-" << endl;
    cin >> telefon;
    e = strlen( telefon );
    cout << endl << "Twoja wizytowka:" << endl;
    cout << endl << nazwisko << " " << imie << endl << firma << "- " << adres << endl << telefon << endl;
    cout << endl << "Liczba znakow w twojej wizytowce (bez spacji) to- " <<( a + b + c + d + e ) - 1 << endl;
    getch();
    return( 0 );
}
.
P-4052
lynx
» 2009-02-03 18:59:48
Zanim użyjesz gets() po cin, musisz wyczyścić bufor wejścia, bo inaczej gets uzna że już wpisałeś tekst. Sprawdź ten kod i daj znać czy teraz działa dobrze. :)
C/C++
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    char imie[ 25 ], nazwisko[ 25 ], firma[ 50 ], adres[ 50 ], telefon[ 50 ];
    int a, b, c, d, e, f, g;
    cout << "Podaj imie-" << endl;
    cin >> imie;
    a = strlen( imie );
    cout << "Podaj nazwisko-" << endl;
    cin >> nazwisko;
    b = strlen( nazwisko );
    cout << "Podaj nazwe firmy-" << endl; /*Mógłby mi ktoś powiedzieć czemu program to 'omija', bo ja już nie wiem. Wszystkiego próbowałem*/
    fflush( stdin ); //CZYSZCZENIE BUFORA
    gets( firma );
    c = strlen( firma );
    cout << "Podaj adres firmy-" << endl;
    gets( adres );
    d = strlen( adres );
    cout << "Podaj telefon (swoj/firmowy)-" << endl;
    cin >> telefon;
    e = strlen( telefon );
    cout << endl << "Twoja wizytowka:" << endl;
    cout << endl << nazwisko << " " << imie << endl << firma << "- " << adres << endl << telefon << endl;
    cout << endl << "Liczba znakow w twojej wizytowce (bez spacji) to- " <<( a + b + c + d + e ) - 1 << endl;
    getch();
    return( 0 );
}
P-4055
malan
Temat założony przez niniejszego użytkownika
» 2009-02-03 20:06:12
Działa ;].
Tylko teraz czy dobrze rozumiem...
C/C++
cout << "Podaj nazwisko-" << endl;
cin >> nazwisko; /*Czyli..., tutaj wpisując zmienną 'wypełniłem' bufor.*/
b = strlen( nazwisko );
cout << "Podaj nazwe firmy-" << endl;
gets( firma ); /*Program uznał, że bufor jest 'pełny', czyli, że coś wpisałem i przechodził dalej*/
Może profesjonalnie tego nie wytłumaczyłem, ale o to mniej więcej chodzi tak? ;>
P-4062
lynx
» 2009-02-03 20:11:32
Tak o to mniej więcej chodzi. ;)
P-4063
malan
Temat założony przez niniejszego użytkownika
» 2009-02-03 20:31:48
Ok, dzięki ;).
P-4065
« 1 »
  Strona 1 z 1