Jump to content
DMBoss

[Ajuda] Trabalho Final

Recommended Posts

DMBoss

Boas, eu já sou utilizador do P@P a algum tempo.

Estou a desenvolver um trabalho para a disciplina de Programação I e estou com alguns problemas no meu código.

O código que neste momento tenho desenvolvido é o seguinte:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//Estrutura Alunos - contém o nome dos alunos
struct Alunos {
char nome[50];
int naluno;
int idade;
char telemovel[15];
char email[100];
int BI;
int NIF;
int NISS;
};
//Protótipos das Funções
void Menu(void);

//Main - Programa Principal
int main(){

Menu();

}

//Função Insere - guarda os valores no ficheiro
void Insere (void){

struct Alunos aluno;

FILE *fp;

fp = fopen("teste.txt", "a+");

fflush(stdin);
printf("Introduza o nome: ");
//scanf("%[^\n]", &aluno.nome);
gets(aluno.nome);
fflush(stdin);
fflush(stdin);
printf("Introduza o numero de aluno: ");
scanf("%d", &aluno.naluno);
printf("Introduza a idade: ");
scanf("%d", &aluno.idade);
printf("Introduza o numero de telemovel: ");
scanf("%s", &aluno.telemovel);
printf("Introduza o email: ");
scanf("%s", &aluno.email);
printf("BI: ");
scanf("%d", &aluno.BI);
printf("NIF: ");
scanf("%d", &aluno.NIF);
printf("NISS: ");
scanf("%d", &aluno.NISS);

//Gravação no ficheiro
fprintf(fp, "Nome: %s\n", aluno.nome);
fprintf(fp, "Numero Aluno: %d\n", aluno.naluno);
fprintf(fp, "Idade: %d anos\n", aluno.idade);
fprintf(fp, "Telemovel: %s\n", aluno.telemovel);
fprintf(fp, "Email: %s\n", aluno.email);
fprintf(fp, "BI: %d\n", aluno.BI);
fprintf(fp, "NIF: %d\n", aluno.NIF);
fprintf(fp, "NISS: %d\n", aluno.NISS);
fprintf(fp, "\n");
fclose(fp);	
}

//Função Menu - Exibe o menu no ecrã
void Menu (void){
char op;

    do {
        system("clear"); //limpa o ecrã

        //Menu Principal
        printf("Menu Gestão de Dados\n");
        printf("1 - Inserir\n");
        printf("2 - Eliminar\n");
        printf("3 - Alterar\n");
        printf("\n");
	printf("0 - Voltar\n");
        printf("\n");
        printf("Escolha uma opção: ");
        do {
            op = getchar();
        } while ((op < '0') || (op > '3'));

        switch (op) {
            case '1':
                Insere();
                break;
            case '2':
			//Elimina();
                break;
            case '3':
			//Altera();
                break;
        }
    } while (op != '0');
}

O código apresenta o menu e ao ser escolhida a opção 1 (Inserir), ele pede os dados ao utilizador.

O meu problema é que ele não me está a deixar colocar o nome do aluno.

O erro que está a dar não é na compilação mas sim na execução do código.

Imagem com o erro

59zyf7.jpg

Gostava de saber se alguém me consegue ajudar?


DMBoss aka KingOfShadows

Share this post


Link to post
Share on other sites
Baderous

O fflush apenas tem comportamento definido para buffers de saída de dados como o stdout e o stderr, e não para buffers de entrada como o stdin. Existem formas mais correctas de limpar o buffer, que podes ver aqui.

Outra coisa que reparei é que estás a usar o operador & quando estás a ler dados para uma string, isso está errado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.