Ir ao conteúdo
  • Cadastre-se

Problema em modificação de arquivo


hades813

Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...