Mam za zadanie zrobić program wpisujący dane do pliku tekstowego, w moim wypadku test z wieloma odpowiedziami.
Problem jest w tym, że jak wpisuję pytanie, to nie jest ono przypisywane do rekord[c].pytanie, tylko do pozostałych zmiennych.
Np. pytanie: "Ile to 2 razy 2" skutkuje tym, że:
rekord[c].pytanie = Ile
rekord[c].wybor.odpa = to
rekord[c].wybor.odpb = 2
rekord[c].wybor.odpc = razy
rekord[c].wybor.odpd = 2
Jak zrobić, by traktował całe pytanie jako jedno, a potem poprawnie odczytywał?
Kod:
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
struct odpowiedzi
{
char odpa[10];
char odpb[10];
char odpc[10];
char odpd[10];
char odpp[1];
};
struct zadanie
{
char pytanie[100];
odpowiedzi wybor;
};
int i;
zadanie rekord[30];
cin>>i;
ofstream plik;
for ( int c = 1 ; c <= i ; c++ ){
plik.open("plik.txt");
cout<<"Podaj pytanie: "<<endl;
cin>>rekord[c].pytanie;
cout<<"Podaj odpowiedz a: "<<endl;
cin>>rekord[c].wybor.odpa;
cout<<"Podaj odpowiedz b: "<<endl;
cin>>rekord[c].wybor.odpb;
cout<<"Podaj odpowiedz c: "<<endl;
cin>>rekord[c].wybor.odpc;
cout<<"Podaj odpowiedz d: "<<endl;
cin>>rekord[c].wybor.odpd;
cout<<"Podaj odpowiedz poprawna (a/b/c/d): "<<endl;
cin>>rekord[c].wybor.odpp;
plik.write((char *) &c, sizeof(zadanie));}
plik.close();
ifstream plik1;
plik1.open("plik.txt");
for ( int c = 1 ; c <= i ; c++ )
{
cout<<"1. Pytanie: "<<endl;
cout<<rekord[c].pytanie<<endl;
cout<<"Odpowiedz a: ";
cout<<rekord[c].wybor.odpa<<endl;
cout<<"Odpowiedz b: ";
cout<<rekord[c].wybor.odpb<<endl;
cout<<"Odpowiedz c: ";
cout<<rekord[c].wybor.odpc<<endl;
cout<<"Odpowiedz d: ";
cout<<rekord[c].wybor.odpd<<endl;
plik1.read((char *) &c, sizeof(zadanie));
}
plik1.close();
system("PAUSE");
return EXIT_SUCCESS;
}