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