Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gasparzinho

Programa não grava no TXT

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou meio apertado essa semana com a monografia.

Vou copiar seu código e assim que tiver um tempinho tento te ajudar.

 

Enquanto isso, verifique:

http://www.vivaolinux.com.br/artigos/verAr...php?codigo=2134

http://www.vivaolinux.com.br/artigos/verAr...php?codigo=2216

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.