Jump to content

Programa em C dá erro podem dar uma ajuda?


Alex16
 Share

Recommended Posts

bom, tenho este programa que comecei a desenvolver a uns dias atrás, mas dá erro eu sou nova na área de programação e não percebo na muito bem.

ENUNCIADO:

Escreva um pequeno programa que implemente uma base de dados, que terá a capacidade de:

- guardar dados de uma nova pessoa:

•  Nome (40 caracteres)

•  Morada (60 caracteres)

•  Localidade (25caracteres)

•  Codigo_p (8 caracteres)

•  Num_tel (9 caracteres)

- ler os dados de todas as pessoas guardadas em disco e mostrá-los um a um.

O programa deverá usar um menu com as seguintes opções:

Menu

N- Introduz dados de nova pessoa

L- Listar dados de todas as pessoas

S- Sair

PROGRAMA:

#include <stdio.h>
#include <stdlib.h>
#define Fich "dados.dat"
char opc;
char p;
char dados;

struct pDados
{
int p;
char Nome [40];
char Morada [60];
char Localidade [25];
int CodigoPostal[8];
int Telemovel [9];
}

main ()
{

FILE *arq;
int p;
char dados;
char Nome;


arq=fopen("dados.dat", "ab");
dados &p;
printf("Digite o Nome: ");


gets (p.Nome);



printf("Digite a Morada: ");
gets (p.Morada);
printf("Digite a Localidade: ");
gets (p.Localidade);
printf("Digite o Codigo Postal: ");
gets (p.Codigo Postal);
printf("Digite o Numero de Telemovel: ");
gets (p.Telemovel);

FWRITE(&p, sizeof (dados), 1, arq);
FCLOSE(arq);
return 0;

}


Function Menu ()
Printf ("\n Menu \n\n ");
Printf ("\n N - Intrudizir dados \n\n ");
Printf ("\n L - Leitura dos dados \n\n ");

Printf ("\n S - Sair \n\n ");

Printf("Qual é a opção? ");
Scanf ("%c" , opc);

Do {

Switch (opc)
{
Case 'n':
Case 'N': Introduzir dados de uma nova pessoa ()

Case 'l':
Case 'L': Listar dados ()

Case 's':
Case 'S': exit(1);

default

Printf("Erro!!");
While (opc!='N') or (opc!= 'n');
}

Function Listar Dados ()

int main ()
{
FILE*arq;
arq=FOPEN("dados.txt", "rb");
dados p;
while (FREAD (&p, sizeof(dados), 1, arq) !=o)
{
Printf ("Nome: %c ", p.nome);
Printf ("Morada: %c ", p.morada);
Printf ("Localidade: "%c , p.localidade);
Printf ("codigo Postal: %d ", p.nome);
Printf ("Telemovel: %d ", p.telemovel);
}
FCLOSE (arq);
Return o;

int main ()
{
FILE *F;
FCLOSE(F);
}

Vai dar erro logo aqui " gets (p.Nome); "

espero que possam dar uma ajuda

Edit: GeSHi adicionado (pmg)

Link to comment
Share on other sites

Tens tres main? Ou fui eu que dei cabo do programa quando adicionei o GeSHi, e o que agora é um bloco de codigo era suposto serem 3 blocos?

Reve o teu post, corrige se necessario e aceita as minhas desculpas.

Usas muitos identificadores que nao existem em C (FWRITE, FCLOSE, Printf, Scanf, Switch, Case, While, Fopen, FREAD). Corrige isso tambem.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

é provável, é um trabalho final de programação que estou a realizar, e tb já me pediram ajuda em algo parecido mas era para cd's  ou lista telefonica mas ja para resolver e chegar ate aqui foi oque foi :s

estas a dizer que não só não é o teu primeiro programa como te pedem ajuda para resolver problemas ????  ?

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

pois, e afinal ja vi tb um enunciado igualzinho ao meu s:

estou tao confusa!

#include <stdio.h>
#include <stdlib.h>
#define Fich "dados.dat"
char opc;
char p;
char dados;

struct Dados
{    
int p;
char Nome [40];
char Morada [60];
char Localidade [25];
int CodigoPostal[8];
int Telemovel [9];
}

main ()

   
FILE *arq;
int p;
char dados;
char Nome;
char Morada;
char Localidade;
int CodigoPostal;
int Telemovel;

arq=fopen("dados.dat", "ab");
dados &p;

printf("Digite o Nome: ");
scanf ("%c", Nome);
printf("Digite a Morada: ");
scanf ("%c", Morada);
printf("Digite a Localidade: ");
scanf ("%c", Localidade);
printf("Digite o Codigo Postal: ");
scanf ("%d", CodigoPostal);
printf("Digite o Numero de Telemovel: ");
scanf("%d", Telemovel);

FWRITE(&p, sizeof (dados), 1, arq);
FCLOSE(arq);
return ;

}


Function Menu ()
Printf ("\n Menu \n\n ");
Printf ("\n N - Intrudizir dados   \n\n ");
Printf ("\n L - Leitura dos dados   \n\n ");

Printf ("\n S - Sair  \n\n ");

Printf("Qual é a opção?  ");
Scanf ("%c" , opc);

Do {

Switch (opc)
{
Case 'n':
Case 'N': Introduzir dados de uma nova pessoa ()

Case 'l':
Case 'L': Listar dados ()

Case 's':
Case 'S': exit(1);

default

Printf("Erro!!");
While (opc!='N') or (opc!= 'n');
}

Function Listar Dados ()

int main ()
{
FILE*arq;
arq=FOPEN("dados.txt", "rb");
dados p;
while (FREAD (&p, sizeof(dados), 1, arq) !=o)
{
Printf ("Nome:  %c ", p.nome);
Printf ("Morada:  %c ", p.morada);
Printf ("Localidade:  "%c , p.localidade);
Printf ("codigo Postal:  %d ", p.nome);
Printf ("Telemovel:  %d ", p.telemovel);
}
FCLOSE (arq);
Return o;

int main ()
{
FILE *F;
FCLOSE(F);
}

agr da erro arq=fopen("dados.dat", "ab");

OMG!

Link to comment
Share on other sites

Essa indentação está... quer dizer, nem existe sequer...

Esse código tem tanto erro junto, que....

Já agora isso é suposto estar em C? é que vejo "Function Listar Dados ()","main ()", etc...

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • 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.