• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

gotak

Sistema de Mensagens - dúvida

3 mensagens neste tópico

boas, estou a fazer um programa em c, mas estou com uma dúvida se alguem me pudesse esclarecer, agradecia

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

#define MAX_MENSAGEM 500
#define MAX_USER 50

struct tagUser{
char idUser[20];
char password[10];
char nome[20];
};

struct tagNew{
char newUser[10];
char newPassword[10];
};

struct tagMensag{
int user_orig;
int user_dest;
int data;
int hora;
int assunto;
int corpo_mensag;
};

void menu_principal();
void menu_admin();
void menu_geral();
int main ()
{

int result;
int opcao2;
int opcao;
struct tagUser username;
struct tagNew newacc;
struct tagMensag mensagem;

do{
	menu_principal();
	scanf("%i", &opcao);

	if(opcao==1)
		switch (opcao)
	{
		case 1:
			printf("\nUsername: \n");
			fflush(stdin);
			gets(username.idUser);
			printf("\nPassword: \n");
			gets(username.password);

			result = strcmp(username.idUser, "sa");
			result = strcmp(username.password, "sa");
			if(result==0){

		menu_admin();
		scanf("%i", &opcao2);

		switch (opcao2)
		{
		case 1:
			if(opcao==1)
				printf("ID do User: \n");
			fflush(stdin);
			gets(newacc.newUser);
			printf("Password do User: \n");
			gets(newacc.newPassword);
			break;
		}
		}
		else
		{
			printf("Erro\n");
		}
		break;
}
}while(opcao != 2);

return 0;
}
void menu_principal()
{
printf("\n******** Menu ********\n");
printf("*   1 - Log On:      *\n");
printf("*   2 - Terminar     *\n");
printf("**********************\n");
printf("Indique a opcao pretendida:");
}
void menu_admin()
{
printf("\n********* System Menu *********\n");
printf("*   1 - Criar Utilizadores      *\n");
printf("*   2 - Apagar Utilizadores     *\n");
printf("*   3 - Ler Mensagens           *\n");
printf("*   4 - Enviar Mensagens        *\n");
printf("*   5 - Apagar Mensagens        *\n");
printf("*                               *\n");
printf("*   0 - Sair                    *\n");
printf("*********************************\n");
printf("Indique a opcao pretendida:");
}

só que quero guardar os utilizadores criados, mas não sei como guardar, penso q seja com o array mas nao tenho a certeza se puderem ajudar.

cumps,

gotak

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa noite,

Basicamente, a tua pergunta é "Como armazenar dados?" . Como deves calcular, essa pergunta tem uma resposta bastante complexa. Porém, no âmbito do que pretendes fazer, a resposta é simples: ou usas um array, ou uma lista, ou uma Hash table, ou uma árvore, ou qualquer outra estrutura de dados simples. Parece-me que o que pretendes é somente algo que funcione e seja o mais simples possível, pelo que eu diria que o pretendes é realmente um array, como dizes.

Escreves no teu código "#define MAX_USER 50", pelo que depreendo que não vai ser possível criar mais que 50 utilizadores. Sendo assim, crias um vector de 50 utilizadores:

struct tagUser utilizadores[50];

Agora, precisas de um índice que te indique a última posição do vector que contém um utilizador.

int i = -1;

Sempre que i < 0, não existem utilizadores criados.

Agora, cada vez que pretendes criar um utilizador:

struct tagUser novo_utilizador;

/*inicialização do novo_utilizador*/

utilizadores[++i] = novo_utilizador;

Nota que: ++i é diferente de i++.

Espero ter ajudado,

Tomás

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se percebi bem mas acho que queres criar vários perfis para vários utilizadores, ora bem para isso fazer um array de structs...

Depois guardas num ficheiro com as função fwrite e lês com a função fread... Acho que é isso que queres  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora