Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void remover_newline(char *);
struct dados {
char matricula[5];
char nome[40];
char curso[20];
char nota[2];
} aluno;
int main(void)
{
char linha[40];
FILE *dados;
dados = fopen("dados.txt", "r");
if(dados == NULL){
printf("dados.txt - arquivo desconhecido\n");
getchar();
exit(1);
}
while(fgets(linha, sizeof(linha), dados) != NULL){
remover_newline(linha);
strcpy(aluno.matricula, linha);
fgets(linha, sizeof(linha), dados);
remover_newline(linha);
strcpy(aluno.nome, linha);
fgets(linha, sizeof(linha), dados);
remover_newline(linha);
strcpy(aluno.curso, linha);
fgets(linha, sizeof(linha), dados);
remover_newline(linha);
strcpy(aluno.nota, linha);
printf("aluno.matricula: %s\n", aluno.matricula);
printf("aluno.nome: %s\n", aluno.nome);
printf("aluno.curso: %s\n", aluno.curso);
printf("aluno.nota: %s\n\n", aluno.nota);
break;
}
fclose(dados);
return 0;
}
void remover_newline(char *linha)
{
char *ptr;
ptr = strchr(linha, '\n');
if(ptr != NULL)
*ptr = '\0';
}
dados.txt:
Code:
20457
Denis Rocha da Silva
Linguagem de programação
{5} {40} {20} {2}
98364
Tom Hanks
Teatro
{38} {42} {2} {27}
44078
Nicolas Cage
História
{11} {29} {5} {37}
10904
Sabrina da Silva Sauro
Matemática
{3} {43} {11} {18}
12003
Charles Petzold
Programação
{34} {23} {12} {1}
The output:
Code:
aluno.matricula: 20457Denis Rocha da Silva
aluno.nome: Denis Rocha da Silva
aluno.curso: Linguagem de program{5} {40} {20} {2}
aluno.nota: {5} {40} {20} {2}
I've been trying to fix this for a long time and it is driving me crazy. What am I doing wrong? I also have this strange feeling that there is a better way to do this. Help please.