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

Obsługa plików "bufor"

Ostatnio zmodyfikowano 2009-05-27 13:09
Autor Wiadomość
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.jpg

I 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

C/C++
#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: //ESC / Wyjscie
            koniec = true;
            break;
           
        case 224: //klawisze specjalne
            znak = getch();
            switch( znak )
            {
            case 82: // INSERT / Kalkulator
                Kalkulator();
                break;
            }
            break;
           
        case 9: // TAB / Quiz
            Quiz();
            break;
        }
    }
    return( 0 );
}
P-7212
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:
C/C++
pytania.read( pytanie1, 107 ); //bez zmian
pytanie1[ 107 ] = 0; //to dopisano
P-7213
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
P-7224
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. ;-)
P-7225
« 1 »
  Strona 1 z 1