Obsługa plików "bufor"
Ostatnio zmodyfikowano 2009-05-27 13:09
Haker123 Temat założony przez niniejszego użytkownika |
Obsługa plików "bufor" » 2009-05-27 00:35:48 Mam problem z buforem (tak mi sie wydaje). Zapisalem pytania do quizu w pliku textowym, pytania wyskakuja poprawnie lecz z malymi dodatkami np. jakas buzia,przecinek,itp http://img30.imageshack.us/my.php?image=beztytuusff.jpgI nie wiem co robic ;/ dawalem mniej to nie bylo zadnych odatkowych znaczkow ale za to mialem mniej miejsca bo chce miec odstp 1 linijki miedzy pytaniem1/odpowiezia/pytaniem2 Bede wdzieczny za mala podpowiedz :P kod wyglada tak #include <iostream> #include <conio.h> #include <console.ddt> #include <fstream>
using namespace std; using namespace ddt::console;
void Quiz( void ) { clrscr(); char pytanie1[ 110 ]; char pytanie2[ 110 ]; char pytanie3[ 110 ]; fstream pytania; pytania.open( "Pytania.txt", ios::in ); if( pytania.good() == true ) { int odp1; int odp2; int odp3; int punkty = 0; pytania.read( pytanie1, 107 ); cout << pytanie1; cout << ""; cin >> odp1; if( odp1 == 4 ) { punkty += 1; } pytania.read( pytanie2, 104 ); cout << pytanie2; cout << ""; cin >> odp2; if( odp2 == 2 ) { punkty += 1; } pytania.read( pytanie3, 105 ); cout << pytanie3; cout << ""; cin >> odp3; cout << endl << endl; if( odp3 == 3 ) { punkty += 1; } if( punkty == 0 ) { cout << "Ani jednego punktu nie zdobyles??;/" << endl; } if( punkty == 1 ) { cout << "1 punkt na 3 mozliwe, slabiutko" << endl; } if( punkty == 2 ) { cout << "No nawet ladnie, 2 punkty" << endl; } if( punkty == 3 ) { cout << "Ladnie zdobyles maxymalna ilosc punktow" << endl; } getch(); } else cout << "Brak pliku z pytaniami"; getch(); }
void Kalkulator( void ) { clrscr(); int a, b, dwa; gotoxy( 1, 4 ); cout << "Podaj liczbe a: "; cin >> a; cout << endl; cout << "Podaj liczbe b: "; cin >> b; cout << endl; cout << "Co zrobic:" << endl; cout << "[1]: dodac" << endl; cout << "[2]: odjac" << endl; cout << "[3]: pomnozyc" << endl; cout << "[4]: podzielic" << endl; cout << ""; cin >> dwa; cout << endl; switch( dwa ) { case 1: cout << "Wynik dodawania to: " << a + b << endl << endl; break; case 2: cout << "Wynik odejmowania to: " << a - b << endl << endl; break; case 3: cout << "Wynik mnozenia to: " << a * b << endl << endl; break; case 4: cout << "Wynik dzielenia to: " << a / b << endl << endl; break; default: cout << "Zly wybor"; break; } getch(); }
void komunikat( void ) { clrscr(); gotoxy( 1, 1 ); cout << "Program 3in1"; gotoxy( 1, 25 ); cout << "[ESC] Wyjscie z programu "; cout << "[INSERT] Kalkulator "; cout << "[TAB] Quiz "; }
int main() { bool koniec = false; while( koniec != true ) { komunikat(); unsigned char znak = getch(); switch( znak ) { case 27: koniec = true; break; case 224: znak = getch(); switch( znak ) { case 82: Kalkulator(); break; } break; case 9: Quiz(); break; } } return( 0 ); }
|
|
DejaVu |
» 2009-05-27 00:46:17 Masz taką linijkę: pytania.read( pytanie1, 107 ); za pomocą tej linijki wczytujesz pytanie z pliku. Pytanie to wczytujesz do tablicy: char pytanie1[ 110 ]; Każdy łańcuch, który jest wyświetlany powinien kończyć się znakiem '\\0'. Twój łańcuch się nie kończy takowym, więc wyświetla 'śmieci', które znajdują się w każdym bajcie, który nie został nadpisany podczas odczytu. Przypuszczam, że wykonanie poniższego rozwiąże Twój problem: pytania.read( pytanie1, 107 ); pytanie1[ 107 ] = 0;
|
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2009-05-27 12:17:04 Wielkie dzieki ;] dziala. Temat do zamkniecia, chyba ze ktos chce cos dodac :P |
|
GoldWolf |
» 2009-05-27 13:09:43 Wielkie dzieki ;] dziala. Temat do zamkniecia, chyba ze ktos chce cos dodacTwój temat ty decydujesz kiedy zamykać. Jeśli jesteś usatysfakcjonowany odpowiedzią to zamykaj, śmiało to nie szczypie. ;-) |
|
« 1 » |