maninhx
(usa Slackware)
Enviado em 30/10/2008 - 23:48h
Pessoal tenho uma missao. Vai ser dificil explicar.
Estou fazendo um programinha no qual eu preciso que Onde diz //implemente aqui (essa linha)
busque o arquivo entrada.txt com os dados inseridos. Mas tentei e não consegui.
Segue abaixo o script.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TAM_STRING 30
FILE *entrada;
typedef struct
{
int dia;
int mes;
int ano;
} data;
typedef struct opcionais_hardware
{
char nome[TAM_STRING];
char descricao[TAM_STRING*2];
struct opcionais_hardware *proximo;
} opcionais_hardware;
typedef struct aplicativos
{
char nome[TAM_STRING];
char versao[TAM_STRING/2];
data data_instalacao;
struct aplicativos *proximo;
} aplicativos;
typedef struct
{
char fabricante[TAM_STRING/2];
char modelo[TAM_STRING/2];
float clock;
} processador;
typedef struct
{
processador cpu;
int memoria;
int hd;
opcionais_hardware *op_hw;
} hardware;
typedef struct
{
char nome[TAM_STRING];
char versao[TAM_STRING/2];
data data_instalacao;
char senha[TAM_STRING];
} sistema_operacional;
typedef struct
{
sistema_operacional so;
aplicativos *app;
} software;
typedef struct
{
char setor[TAM_STRING];
char responsavel[TAM_STRING];
int patrimonio;
} logistica;
typedef struct computador
{
hardware hw;
software sw;
logistica logt;
} computador;
typedef struct no_computador
{
computador *pc;
struct no_computador *proximo;
} no_computador;
typedef struct lista
{
no_computador *inicio;
no_computador *fim;
} lista;
lista *lerArquivo(char endereco[])
{
lista *l=NULL;
//implemente aqui (Essa linha)
entrada = fopen("entrada.txt","a")
fclose(entrada);
return l;
}
void escreverSaida1(lista *l,char endereco[],int memoria)
{
//implemente aqui
}
void escreverSaida2(lista *l,char endereco[],char nome[],char versao[])
{
//implemente aqui
}
void imprimir(lista *l)
{
no_computador *aux=l->inicio;
while (aux!=NULL)
{
printf("fabricante: %s\n",aux->pc->hw.cpu.fabricante);
printf("modelo: %s\n",aux->pc->hw.cpu.modelo);
printf("clock: %f\n",aux->pc->hw.cpu.clock);
printf("memoria: %d\n",aux->pc->hw.memoria);
printf("hd: %d\n",aux->pc->hw.hd);
opcionais_hardware *aux1=aux->pc->hw.op_hw;
while (aux1!=NULL)
{
printf("opcional: %s %s\n",aux1->nome,aux1->descricao);
aux1=aux1->proximo;
}
printf("s.o.: %s\n",aux->pc->sw.so.nome);
printf("versao: %s\n",aux->pc->sw.so.versao);
printf("instalacao: %d/%d/%d\n",aux->pc->sw.so.data_instalacao.dia,aux->pc-
>sw.so.data_instalacao.mes,aux->pc->sw.so.data_instalacao.ano);
printf("senha: %s\n",aux->pc->sw.so.senha);
aplicativos *aux2=aux->pc->sw.app;
while (aux2!=NULL)
{
printf("aplicativos: %s %s %d/%d/%d\n",aux2->nome,aux2->versao,aux2-
>data_instalacao.dia,aux2->data_instalacao.mes,aux2->data_instalacao.ano);
aux2=aux2->proximo;
}
printf("setor: %s\n",aux->pc->logt.setor);
printf("responsavel: %s\n",aux->pc->logt.responsavel);
printf("patrimonio: %d\n\n",aux->pc->logt.patrimonio);
aux=aux->proximo;
}
}
void menu()
{
system("cls");
printf("\n |------------------------------------------------|\n");
printf(" | |\n");
printf(" | UNIVERSIDADE DO TOCANTINS |\n");
printf(" | |\n");
printf(" |------------------------------------------------|\n");
printf(" | |\n");
printf(" | <1> Abrir \"entrada.txt\" |\n");
printf(" | <2> Imprimir |\n");
printf(" | <3> Relatorio 1 (\"saida1.txt\") |\n");
printf(" | <4> Relatorio 2 (\"saida2.txt\") |\n");
printf(" | <5> Sair |\n");
printf(" | |\n");
printf(" |------------------------------------------------|\n\n");
printf("\t\tOpcao: ");
}
int main()
{
lista *l=NULL;
char opcao;
do
{
menu();
fflush(stdin);
opcao=getchar();
switch(opcao)
{
case '1':
l=lerArquivo("entrada.txt");
system("cls");
printf("\n\tArquivo aberto com sucesso!\n\n\n");
system("pause");
break;
case '2':
system("cls");
if (l!=NULL)
imprimir(l);
else
printf("\n\tLista vazia!\n\n\n");
system("pause");
break;
case '3':
system("cls");
if (l!=NULL)
{
int memoria;
printf("\n\n\tMemoria menor que : ");
scanf("%d",&memoria);
escreverSaida1(l,"saida1.txt",memoria);
printf("\n\tRelatorio 1 emitido com sucesso!\n\n\n");
}
else
printf("\n\tNao foi possivel emitir relatorio 1!\n\n\n");
system("pause");
break;
case '4':
system("cls");
if (l!=NULL)
{
char nome[TAM_STRING];
char versao[TAM_STRING/2];
printf("\n\n\tNome : ");
fflush(stdin);
fgets(nome,TAM_STRING,stdin);
nome[strlen(nome)-1]='{TTEXTO}';
printf("\n\tVersao : ");
fflush(stdin);
fgets(versao,TAM_STRING/2,stdin);
versao[strlen(versao)-1]='{TTEXTO}';
escreverSaida2(l,"saida2.txt",nome,versao);
printf("\n\tRelatorio 2 emitido com sucesso!\n\n\n");
}
else
printf("\n\tNao foi possivel emitir relatorio 2!\n\n\n");
system("pause");
break;
default:
if (opcao!='5')
continue;
}
} while(opcao!='5');
}