k_program 0 Denunciar post Postado Abril 1, 2007 Boa noite!!!! Estou fazendo um programa q tem q ler dados de um arquivo txt...e mostrar ordenado segundo a opção do usuário...em outro arquivo txt...o problema é que quando compilo aparece um erro q nao consigo identificar...aparece a frase:"cannot convert 'FILE*' to 'const char*'... Alguém pode me dizer como faço pra arrumar isso??? Qualquer ajuda será bem vinda... #include <conio.h>#include <stdio.h>#include <iostream.h>#include <string.h>#include <stdlib.h>#include <math.h>int i,j;struct{ int mat; char nome[41]; char curso[26]; int nota;}reg[20],regtemp;// ___________________________________________________________void ord_nome(){ for(i=0;i<19;i++) for(j=i+1;j<20;j++) if(strcmp(reg[j].nome,reg[i].nome)<0) { regtemp=reg[i]; reg[i]=reg[j]; reg[j]=regtemp; }}//___________________________________________________________________void ord_mat(){ int m,lugar; for(i=0;i<19;i++) { m=reg[i].mat; lugar=i; for(j=i+1;j<20;j++) if(reg[j].mat<m) { m=reg[j].mat; lugar=j; } regtemp=reg[i]; reg[i]=reg[lugar]; reg[lugar]=regtemp; }}//______________________________________________________________void ord_curso(){ for(i=0;i<19;i++) for(j=i+1;j<20; j++) if(strcmp(reg[j].curso,reg[i].curso)<0) { regtemp=reg[i]; reg[i]=reg[j]; reg[j]=regtemp; }}//_________________________________________________________________void ord_nota(){ int m, lugar; for(i=0;i<20; i++) { m=reg[i].nota; lugar=i; for(j=i+1;j<20;j++) { if(reg[j].nota>m) { m=reg[j].nota; lugar=j; } regtemp=reg[i]; reg[i]=reg[lugar]; reg[lugar]=regtemp; }}void main();{ FILE *fent,*fsai; int escolha=0,a=0; float soma=0,media=0; if((fent=fopen("arq_ent.txt","r"))==NULL); { printf("O arquivo de entrada nao pode ser aberto!"); getch(); exit(1); } if((fsai=fopen("arq_sai.txt","w"))==NULL); { printf("O arquivo de saida nao pode ser aberto!"); getch(); exit(1); } do { for(i=0;i<20;i++) { fscanf(fent,"%5d%40c%25c%3d", ®[i].mat,reg[i].nome,reg[i].curso,®[i].nota); //reg[40].nome='\'; //reg[25].curso='\'; }printf("\n\n ----------------------- ");printf("\n 1 - Ordenar por matricula");printf("\n 2 - Ordenar por nome");printf("\n 3 - Ordenar por curso");printf("\n 4 - Ordenar por nota");printf("\n 5 - Fechar Programa ");printf("\n\n Escolha uma opcao: ");printf("\nEntre com sua escolha:");scanf("%d",&escolha);switch (escolha){ case 1: { ord_mat(); printf("\n\n Ordenar por Matricula "); for(i=0;i<20;i++) printf(fsai,"%5d%s%s%d\n",reg[i].mat,reg[i].nome,reg[i].curso,reg[i].nota); break; } case 2: { ord_nome(); printf("\n\n Ordenar por Nome "); for(i=0;i<20;i++) printf(fsai,"%5d%s%s%d\n", reg[i].mat,reg[i].nome,reg[i].curso,reg[i].nota); break; } case 3: { ord_curso(); printf("\n\n Ordenar por Curso "); for(i=0;i<20;i++) printf(fsai,"%5d%s%s%d\n", reg[i].mat,reg[i].nome,reg[i].curso,reg[i].nota); break; } case 4: { ord_nota(); printf("\n\n Ordenar por Nota "); for(i=0;i<20;i++) printf(fsai,"%5d%s%s%d\n", reg[i].mat,reg[i].nome,reg[i].curso,reg[i].nota); break; } default: printf("Opcao errada!!!!!!\n"); break;} for(i=0;i<20;i++) soma=soma+reg[i].nota; media=soma/20; for(i=0;i<20;i++) { if(reg[i].nota>=50) a++; //fprintf(fsai,"\n Alunos Aprovados: %d", a); //fprintf(fsai,"\n Media: %f",media); } }while (escolha!=5);fprintf(fsai,"\n Alunos Aprovados: %d", a);fprintf(fsai,"\n Media: %f",media);fclose(fent);fclose(fsai);}getch();} Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Abril 2, 2007 entrando nos cases, a sintaxe do printf está errada: printf(fsai,"%5d%s%s%d\n",reg[i].mat,reg[i].nome,reg[i].curso,reg[i].nota); Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Abril 2, 2007 troca por fprintf e tenta denovo Compartilhar este post Link para o post Compartilhar em outros sites