Code:
/*
============================================================================
Name : Trabalho.c
Author : gmc
Version : 1.0
Copyright : GMC
Description : Buzz
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void ad_perguntas();
void ver_perguntas();
void estrelas();
void menu_principal();
void jogo();
void menu_ad();
void adm();
void main();
//******************************************************************************************************
//Estruturas a serem usadas
struct perg /* Estrutura Questões */
{
int id;
char ques[200];
char op1[15];
char op2[15];
char op3[15];
char op4[15];
int res;
};
struct jogador /* Estrutura Utilizadores */
{
char nome[100];
char id[100];
char pass[100];
int log;
};
//função para adcionar perguntas num ficheiro
void ad_perguntas()
{
struct perg per[100];
int quantos;
char tmp[200];
char *p;
printf("Quantos registos quer criar? ");
fgets(tmp, sizeof tmp, stdin);
quantos=strtol(tmp, NULL, 10);
int n;
for (n = 0; n < quantos; n++)
{
printf("Introduza ID para a pergunta: \n");
fgets(tmp, sizeof tmp, stdin);
per[n].id = strtol(tmp, NULL, 10);
printf("Introduza a pergunta: \n");
fgets(per[n].ques, 200, stdin);
if ((p = strchr(per[n].ques, '\n')) != NULL)
*p = '\0';
printf("Opção 1 : \n");
fgets(per[n].op1, 14, stdin);
if ((p = strchr(per[n].op1, '\n')) != NULL)
*p = '\0';
printf("Opção 2 :\n");
fgets(per[n].op2, 14, stdin);
if ((p = strchr(per[n].op2, '\n')) != NULL)
*p = '\0';
printf("Opção 3 : \n");
fgets(per[n].op3, 14, stdin);
if ((p = strchr(per[n].op3, '\n')) != NULL)
*p = '\0';
printf("Opção 4 : \n");
fgets(per[n].op4, 14, stdin);
if ((p = strchr(per[n].op4, '\n')) != NULL)
*p = '\0';
printf("Introduza o número da resposta correta: \n");
fgets(tmp, sizeof tmp, stdin);
per[n].res = strtol(tmp, NULL, 10);
}
FILE* data;
if ( (data = fopen("data.txt", "a")) == NULL )
{
printf("Erro \n");
}
for (n = 0; n < quantos; n++) {
fprintf(data, "%d - %s %s|%s|%s|%s|Resposta correta: %d \n",per[n].id, per[n].ques, per[n].op1, per[n].op2, per[n].op3, per[n].op4, per[n].res);
adm();
}
fclose(data);
}
void ver_perguntas()
{
{
char c;
FILE* data;
if ((data = fopen("data.txt", "rb")) == NULL)
{
printf("Erro ao abrir ficheiro\n");
}
struct perg* per;
per= malloc(100 * sizeof(*per));
fread(per[0].ques, sizeof(struct perg), 100, data);
free(per);
fclose(data);
printf("Quer voltar ao menu anterior? \n");
scanf("%c", &c);
if (c=='s'||c=='S')
{
menu_ad();
}
}
}
//Funções a serem usadas
void estrelas()
{
int i;
for (i=0; i<=20; i++)
{
putchar('*');
}
//Poe caracter vazio
putchar('\n');
}
void menu_principal()
{
int op;
//Escreve string
puts("------------MENU-------------------\n");
printf("1 - Entrar como Administador \n");
printf("2 - Entrar como jogador \n");
printf("3 - Sair da aplicação \n");
printf("Escolha uma das opções:\n");
scanf("%d", &op);
switch (op)
{
case 1:
//chama função admin
adm();
break;
case 2:
//chama estrutura 2
jogo();
break;
case 3:
//chama estrutura 3
exit(0);
break;
default:
printf("Opção inválida");
}
}
void jogo()
{
int op1;
printf("1 - Jogo curto (2 perguntas)\n");
printf("2 - Jogo médio (4 perguntas)\n");
printf("3 - Jogo longo (8 perguntas)\n");
printf("4 - Voltar ao menu inicial \n");
printf("Escolha o tipo de jogo desejado:\n");
scanf("%d", &op1);
switch (op1)
{
case 1:
//chama estrutura 1
printf("escolheu 1");
break;
case 2:
//chama estrutura 2
printf("escolheu 2");
break;
case 3:
//chama estrutura 3
printf("escolheu 3");
break;
case 4:
//chama estrutura 3
menu_principal();
break;
default:
printf("Valor inválido");
}
}
void menu_ad()
{
int op;
printf("1 - Inserir perguntas na BD \n");
printf("2 - Ver perguntas da BD \n");
scanf("%d", &op);
getchar();
switch (op)
{
case 1:
ad_perguntas();
break;
case 2:
ver_perguntas();
default:
printf("Escolha inválida \n");
}
}
void adm()
{
char login [10], pass [10];
int x, a=1 , b=1;
for (x=0; x<3; x++)
{
printf("Utilizador: \n");
scanf("%s", login);
printf("Password: \n");
scanf("%s", pass);
a= strcmp(login,"gil");
b= strcmp(pass, "123");
if (a==0 && b==0)
{
printf("Bem vindo \n");
//Chamar um menu de escolha para o Admin
menu_ad();
x=5;
break;
}
else
{
printf("Dados Utilizador ou Pass errados....Tente de novo \n");
}
}
if (x==3)
{
printf("Tentativas exedidas, vai voltar ao menu inicial..\n");
menu_principal();
}
}
void main()
{
estrelas();
printf("BEMVINDOS AO BUZZ \n");
estrelas();
putchar('\n');
menu_principal();
}
1- Nothing is writed when i use ad_perguntas function.