Witam,
muszę stworzyć opcję dodaj pytanie do gry milionerzy(konsolowa). Chodzi o to, by po wpisaniu np. 3 switch przeszedł do funkcji dodaj pytanie.
Dodaj pytanie powinno otworzyć plik tekstowy i na końcu dodać pytanie według struktury:
Poziom trudności, pytanie, odpowiedz 1, 2, 3, 4, poprawna.
Problemem jest to, że cin/scanf wczytuje do pierwszego białego znaku, a getline powoduje error.
Moje umiejętności są raczej poniżej poziomu newbie, więc proszę o sensowną pomoc bez zbędnych komentarzy typu co za debil.
Oto kod jaki napisałem, ale nie działa tak jak bym chciał (ale przynajmniej się kompiluje co już jest dla mnie sukcesem). Getline wywala error.
#include <stdio.h>
#include <cstdlib>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
struct baza_pytan
{
int poziom; //Łatwe 1, Średnie 2, Trudne 3
string pytanie;
string odpowiedz1;
string odpowiedz2;
string odpowiedz3;
string odpowiedz4;
int poprawna;
};
int main()
{
baza_pytan pytanie[1];
printf("Wybierz poziom trudnosci: 1 Latwy, 2 Sredni, 3 Trudny:\n");
scanf("%d",&pytanie[0].poziom);
printf("Wpisz pytanie:\n");
getline(cin, pytanie[0].pytanie);
printf("Wpisz odpowiedz nr1:\n");
getline(cin, pytanie[0].odpowiedz1);
printf("Wpisz odpowiedz nr2:\n");
getline(cin, pytanie[0].odpowiedz2);
printf("Wpisz odpowiedz nr3:\n");
getline(cin, pytanie[0].odpowiedz3);
printf("Wpisz odpowiedz nr4:\n");
getline(cin, pytanie[0].odpowiedz4);
printf("Która odpowiedź jest poprawna 1-4:\n");
scanf("%d",&pytanie[0].poprawna);
fstream plik;
plik.open("pytania.txt", ios::out);
plik<<pytanie[0].poziom<<endl;
plik<<pytanie[0].pytanie<<endl;
plik<<pytanie[0].odpowiedz1<<endl;
plik<<pytanie[0].odpowiedz2<<endl;
plik<<pytanie[0].odpowiedz3<<endl;
plik<<pytanie[0].odpowiedz4<<endl;
plik<<pytanie[0].poprawna<<endl;
plik.close();
/* FILE *plik;
plik=fopen("pytania.txt","wt");
fwrite(pytanie,sizeof(struct baza_pytan),1,plik);
fclose(plik);
*/
system("pause");
return 0;
}
}