Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
hades813

Problema em modificação de arquivo

Recommended Posts

Bom dia estou com um problema em um programa de modificar textos e não consigo achar o erro pois o programa esta travando na função "modificar notas" perto da linha 80 mais ou menos.

 

codigo:

 

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>	//strtok

#define MAX 80
char opcaoMenu(){
	char op;

	system("cls");
	printf("(L)istar notas\n");
	printf("(M)odificar notas\n");
	printf("(F)im\n");
	scanf(" %c",&op);
	return (toupper(op));	//retorna o caracter sempre em maiúsculo
}

void listarNotas(){
	int num, notas=0;
	float n1,n2,media=0;
	char *nome,*codigo;
	char buf[MAX];
	FILE *arq;

	arq = fopen("lembrete.dat","r");
	if(arq == NULL){

		printf("Erro ao abrir o arquivo\n");
		return;
	}


	
	fgets(buf,MAX,arq);//lê uma linha inteira de um arquivo e armazena em buf

	while(!feof(arq)){ //enquanto não for o fim do arquivo
	
		nome = strtok(buf,";");
		codigo = strtok(NULL,";");		//2º valor até ","
		printf("%s;%s\n",nome,codigo);
		fgets(buf,MAX,arq);//lê próxima linha

	}

	media /= notas;
	printf("%s\n",nome);
	fclose(arq); 
}


void modificarNotas(){
	int num, na, achei=0;
	float n1,n2;
	char *nome,*codigo,*codigoaux,*nomeaux;
	char buf[MAX];
	FILE *lembrete,*auxlembrete;

	lembrete = fopen("lembrete.dat","r");
	if(lembrete == NULL){

		printf("Erro ao abrir o arquivo\n");
		return;
	}

	auxlembrete = fopen("auxlembrete.dat","w");

	printf("\nDigite o codigo do aluno: ");
	scanf("%s",&codigo);
	
	fgets(buf,MAX,lembrete);//lê uma linha inteira de um arquivo e armazena em buf

	while(!feof(lembrete)){ //enquanto não for o fim do arquivo
	
		codigoaux = strtok(buf,";");	//pega o primeiro valor antes da ","
		nomeaux = strtok(NULL,";");		//2º valor até ","

		//erro
		if(codigo == codigoaux){//achou o codigo
			achei = 1;
			printf("Digite o novo codigo:");
			scanf("%s",&nome);
						
		}	
		//copia os dados para o arquivo temporário

		fprintf(auxlembrete,"%s;%s\n",codigo,nome);
		
		fgets(buf,MAX,lembrete);//lê próxima linha
	}

	fclose(lembrete);
	fclose(auxlembrete);

	if(achei == 0)	//nao encontrou
		printf("codigo nao existe.");	
	else{
		remove("lembrete.dat");	//apaga o arquivo original
		rename("auxlembrete.dat","lembrete.dat");	//renomeia o arquivo temporário que 											//contem os dados atualizados
	}

}

int main(){
	char op;

	do{
		op = opcaoMenu();
		if(op=='L')
			listarNotas();	//chama funcao listar notas
		else if(op=='M')
			modificarNotas();	//chama funcao modificar notas
		printf("\n");
		system("pause");
	}while(op != 'F');

	return 0;
}

 

arquivo "lembrete.dat"

"codigo;titulo
codigo1;titulo1
codigo2;titulo2"

 

caso alguem saiba como resolver e possa me falar eu ficaria muito grato pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×