Aplicação de Estruturas e Ficheiros em C
Posted by admin on 25 de Maio de 2012 | Filed under Exercícios, Línguagens de Programação, Programação
Aqui fica um pequeno exercício que fiz onde englobo a aplicação de estruturas e ficheiros em C, não é nada de outro mundo e são conceitos simples de entender.
Aqui fica o código:
#include <stdio .h> #include <stdlib .h> #define N 100 struct data { int dia; int mes; int ano; }; struct localizacao { float latitude; float longitude; }; struct local { char nome[100]; struct data quando; struct localizacao onde; }; void main() { FILE *saida, *entrada; int quantos, i; saida = fopen("saida.txt", "w"); struct local locais[20]; printf("Quantos Locais? "); scanf("%d", &quantos); for(i = 0; i < quantos && i < 20; i++) { printf("Nome = "); fflush(stdin); gets(locais[i].nome); printf("Data(Dia/Mes/Ano) = "); scanf("%d/%d/%d", &locais[i].quando.dia, &locais[i].quando.mes, &locais[i].quando.ano); printf("Latitude = "); scanf("%f", &locais[i].onde.latitude); printf("Longitude = "); scanf("%f", &locais[i].onde.longitude); } if(saida == NULL) { perror("Erro na Abertura do Ficheiro!"); system("PAUSE"); } else { for(i = 0; i < quantos; i++) { fprintf(saida,"%d/%d/%d|%s|%f:%f\n", locais[i].quando.dia, locais[i].quando.mes, locais[i].quando.ano, locais[i].nome, locais[i].onde.latitude, locais[i].onde.longitude); } fclose(saida); } entrada = fopen("saida.txt", "r"); if(entrada == NULL) { perror("Erro na Abertura do Ficheiro!"); system("PAUSE"); } else { i = 0; while(!feof(entrada)) { fscanf("%d/%d/%d|%s|%f:%f\n", &locais[i].quando.dia, &locais[i].quando.mes, &locais[i].quando.ano, &locais[i].nome, &locais[i].onde.latitude, &locais[i].onde.longitude); printf(entrada,"%d/%d/%d|%[^|]|%f:%f\n", locais[i].quando.dia, locais[i].quando.mes, locais[i].quando.ano, locais[i].nome, locais[i].onde.latitude, locais[i].onde.longitude); i++; } fclose(entrada); } } |
O código que apresento está funcional, mas certamente haverá métodos mais elegantes de chegar ao mesmo resultado.
Share