Programa não grava no TXT
Salve salve galera!!!
Seguinte to com uma bronca pra resolver com URGENCIA e preciso da ajudade de vcs!
To fazendo um programa pra faculdade e to me quebrando com o fwrite e tambem outras coisas que ainda não entendi direito. Ateh entendi, se fosse em PHP sairia beleza mas em C fica bem complicado para mim.
Bom a descrição do programa:
Faça um programa para armazenar em arquivo os dados relativos a disciplina de Algoritmos de alunos de uma turma de computação. Os dados a serem gravados correspondem ao registro abaixo:
codigo:integer;
Nome:string[15];
Notas: array[1..5] of real;
Media: real;
Resultado:char;
O programa deverá apresentar um menu com as seguintes opções:
1- Inserir
2- Consultar
3- Alterar dados
4- Excluir
5- Listagem geral
6-Média da Turma
7- Sair
aqui o codigo de ate onde eu fiz:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#define MAX 50
struct cad{
char nome[MAX];
int codigo,registro;
float nota,media;
char resultado;
};
struct cad user[5];
int n=-1;
char numstr[MAX];
void novo(int n);
void grava(int n);
void learquivo(int n);
void consulta(int n);
void altera(int n);
void media(int n);
void linha(int n);
/***********Funcao principal*************/
void main(void)
{
char ch;
int n,num;
do
{ clrscr();
gotoxy(20,2);
linha(n);
gotoxy(20,3);
printf("\xDB PROGRAMA DE REGISTRO \xDB\n");
gotoxy(20,4);
linha(n);
gotoxy(18,7);
printf("CIENCIA DA COMPUTACAO - 2007/2");
gotoxy(20,8);
printf("Copyright© GASPAR TEIXEIRA");
printf("\n\n============== MENU ===================");
printf("\nª Digite (1) para inserir novo aluno!\n");
printf("ª Digite (2) para consultar aluno!\n");
printf("ª Digite (3) para alterar dados!\n");
printf("ª Digite (4) para listagem geral!\n");
printf("ª Digite (5) para media da turma!\n");
printf("ª Digite (6) para sair!\n");
printf("=======================================\n\n\t");
ch=getche();
switch (ch){
case '1': n++;
novo(n);
printf("\n\n\tDeseja gravar os dados? (s/n)");
ch=getche();
if(ch == 's' || ch == 'S')
grava(n);
break;
/*Ainda falta acrescentar os "cases 2,3,4 e 5"*/
/* aqui que preciso de ajuda*/
default :
printf("\tATENCAO: VOCÒ DIGITOU %c!\n",ch);
}
}
while(ch !='6');
printf("\n\n\t\tENCERRANDO O PROGRAMA... AGUARDE!");
delay(3000);
exit(1);
}
/*funcao que insere um novo usuario colocando os dados na memoria*/void novo(int cont)
{ int n;
clrscr();
printf("\nREGISTRO N§: %d.",cont+1);
printf("\n\tInforme o NOME do aluno: ");
gets(user[n].nome);
printf("\n\tInforme o CODIGO do aluno: ");
gets(numstr);
user[n].codigo=atoi(numstr);
printf("\n\tDigite a NOTA na diciplina algoritmos: ");
gets(numstr);
user[n++].nota=atof(numstr);
}/Funcao que grava os dados num arquivo .txt ( neste caso dbcad.txt)/
void grava(int n)
{
FILE *fptr;
if(n<1)
{
printf("\n\nimpossivel gravar os dados");
delay(2000);
return;
}
else
{
if((fptr=fopen("dbcad.txt","wb"))==NULL){
printf("\n\nImpossivel abrir o arquivo.");
delay(1000);
}
else
{ fwrite(user,sizeof(user[0]),n,fptr);
fclose(fptr);
printf("\n\n\t %d registros gravados\n",n+1);
delay(3000);
return;
}
}
}
/somente para layout/
void linha(int n)
{
for(n=1;n<=24;++n)
printf("\xDB");
printf("\n");
}
Bom tem alguma coisa errada com o programa que eu ainda nao consegui resolver ele esta começando no registro nº 2300 e não do 1 como eu pesnei. Isso pode estar acarretando o problema de ele não gravar no txt? Nossa ja refiz ele todo de novo e ainda persiste o erro. http://forum.imasters.com.br/public/style_emoticons/default/natal_mad.gif
Fico grato por qualquer ajuda!!!
Valeu pessoal
Discussão (1)
Carregando comentários...