eu preciso ler cada linha e gardar em variaveis os valores separados por tab, e a partir dos daos dos alunos, fazer as contas e ao fim exibir o resultado... se puder me ajudar agradeço, meu fonte tá ruim... recomeçando ele... # include<stdio.h>
# include <stdio.h>
# include <stdlib.h>
#define MAX_NOME 30
enum { MAX = 81 };
char *extraiDado (char *, char *);
int main(){
system("pause");
system("cls");
FILE *pArq; /* ponteiro para o arquivo com os dados */
char nomeArq[MAX]; /* nome do arquivo */
int n, m, pr, t, i;
float n1, n2, media, p1, p2, p3;
char linha[MAX]; /* dados lidos do arquivo */
char nome[MAX];
char temp[MAX]; /* b dado extraido de linha */
char *p; /* ponteiro que anda pela linha durante
a extracao dos dados */
puts("DIGITE O ARQUIVO DE ENTRADA"); gets(nomeArq);
if ((pArq = fopen(nomeArq, "r")) == NULL)
{
puts("Arquivo não pode ser aberto.");
exit(EXIT_FAILURE);
}
/*
quatro inteiros n, p,m e t, representando respectivamente o n´umero de alunos
da turma, o número de notas de provas, o número de notas de exercícios-programa
e o número de mˆeses de aulas no semestre
*/
fscanf(pArq, "%d %d %d %d", &n, &pr, &m, &t);
/* Verificação os valores que foram lidos - impressão na tela */
printf("n = %d pr = %d m = %d t = %d\n", n, pr, m, t);
/* uma sequˆencia de p naturais representando o peso de cada prova;*/
fscanf(pArq + 1, "%d %d %d", &p1, &p2, &p3);
/* Verificação os valores que foram lidos - impressão na tela */
printf("p1 = %d p2 = %d p3 = %d\n", p1, p2, p3);
fgets (linha, MAX, pArq);
while ( ! feof(pArq) )
{
for(i=0; i<n; i++){
/* extrai nome */
p = linha;
p = extraiDado (p, temp);
strcpy(nome, temp);
/* extrai nota 1 */
p = extraiDado (p, temp);
n1 = atoi (temp);
/* extrai nota 2 */
p = extraiDado (p, temp);
n2 = atoi (temp);
media = (n1 + n2)/2;
/*gravando arquivo de saida*/
printf( "NOME P1 P2 MEDIA\n");
fprintf (stdout, "%-40s %4.1f %4.1f %4.1f ", nome, n1, n2, media);
if (media > 5.0) puts ("aprovado");
else puts("reprovado");
system("pause");
fgets (linha, MAX, pArq);
}
}
}
char *extraiDado (char *buffer, char *temp)
{
int i=0;
do {
temp[i] = *buffer;
buffer++; i++;
} while (*buffer != ';');
temp[i] = '';
return ++buffer;
system("pause");
return 0;
}