![César Frias César Frias](//static.vivaolinux.com.br/imagens/fotos/1314753630.eu.JPG)
btc_cesar
(usa Fedora)
Enviado em 02/05/2008 - 07:50h
po desculpa a demora
segue o codigo completo, ta um pouco grande... a parte de gravação e leitura de binario, nao precisa dar mt importancia, acredito que seja bem parecido com o txt :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char ip[15];
}Tip;
typedef struct
{
char nome_equip[30];
char login[30];
char nome_usuario[50];
int tipo_equip;
float consumo;
char mac[1000];
int ipqtd;
int ipesc;
Tip ip[10];
int qtdeq;
}Tequip;
typedef struct
{
Tequip equipamento[100];
int qtd;
}Tequipamento;
void inserir(Tequipamento *equipamento)
{
int i, j;
printf("Quantos equipamentos deseja inserir: ");
scanf("%i", &(*equipamento).qtd);
fflush(stdin);
for (i = 0; i < (*equipamento).qtd; i++)
{
system("cls");
printf("Nome do equipamento: ");
gets((*equipamento).equipamento[i].nome_equip);
fflush(stdin);
printf("Login: ");
gets((*equipamento).equipamento[i].login);
fflush(stdin);
printf("Nome de usuario: ");
gets((*equipamento).equipamento[i].nome_usuario);
fflush(stdin);
printf("Escolha o tipo de equipamento:\n1 - Impressora\n2 - Notebook\n3 - Servidor\n4 - Desktop\n5 - Roteadores\n6 - Outros\n");
scanf("%i", &(*equipamento).equipamento[i].tipo_equip);
fflush(stdin);
while ((*equipamento).equipamento[i].tipo_equip > 6 || ((*equipamento).equipamento[i].tipo_equip < 1))
{
printf("Opcao incorreta\n");
printf("Escolha o tipo de equipamento:\n1 - Impressora\n2 - Notebook\n3 - Servidor\n4 - Desktop\n5 - Roteadores\n6 - Outros\n");
scanf("%i", &(*equipamento).equipamento[i].tipo_equip);
fflush(stdin);
}
printf("Entre com o MAC do equipamento: ");
gets((*equipamento).equipamento[i].mac);
fflush(stdin);
printf("Entre com o consumo de banda: ");
scanf("%f", &(*equipamento).equipamento[i].consumo);
fflush(stdin);
printf ("Entre com a quantidade de IP's: ");
scanf("%i", &(*equipamento).equipamento[i].ipqtd);
fflush(stdin);
while ((*equipamento).equipamento[i].ipqtd > 10)
{
printf("Escolha um numero menor que 10\n");
printf ("Entre com a quantidade de IP's: ");
scanf("%i", &(*equipamento).equipamento[i].ipqtd);
fflush(stdin);
}
printf("1 - DHCP\n2 - FIXO: ");
scanf("%i", &(*equipamento).equipamento[i].ipesc);
fflush(stdin);
while((*equipamento).equipamento[i].ipesc > 2 || (*equipamento).equipamento[i].ipesc < 1)
{
printf("Opcao incorreta\n");
printf("1 - DHCP\n2 - FIXO: ");
scanf("%i", &(*equipamento).equipamento[i].ipesc);
fflush(stdin);
}
for (j = 0; j < (*equipamento).equipamento[i].ipqtd; j++)
{
printf("Digite o %i ip: ", j+1);
gets((*equipamento).equipamento[i].ip[j].ip);
fflush(stdin);
}
system("cls");
printf("INSERCAO REALIZADA\n\n");
}
}// fim funcao iserir
void remover(Tequipamento *equipamento)
{
char nomeremov[30], nomeq[50];
int i, q=0;
printf("Equipamento a ser removido: ");
gets(nomeremov);
fflush(stdin);
for (i = 0; i < (*equipamento).qtd; i++)
{
if (strstr((*equipamento).equipamento[i].nome_equip, nomeremov) != NULL)
{
(*equipamento).equipamento[i] = (*equipamento).equipamento[(*equipamento).equipamento[i].qtdeq];
(*equipamento).equipamento[i].qtdeq--;
printf("Equipamento removido\n");
}
q++;
}
if (q == 0)
printf("Equipamento nao encontrado\n");
}
void alterar(Tequipamento *equipamento)
{
int i=0, j, q=0;
char nomequip[30], nomeq[50];
printf("Equipamento a ser alterarado: ");
gets(nomequip);
fflush(stdin);
for (i = 0; i < (*equipamento).qtd; i++)
{
if (strstr((*equipamento).equipamento[i].nome_equip, nomequip) != NULL)
{
printf("Entre com o novo nome: ");
gets((*equipamento).equipamento[i].nome_equip);
printf("Login: ");
gets((*equipamento).equipamento[i].login);
fflush(stdin);
printf("Nome de usuario: ");
gets((*equipamento).equipamento[i].nome_usuario);
fflush(stdin);
printf("Escolha o tipo de equipamento:\n1 - Impressora\n2 - Notebook\n3 - Servidor\n4 - Desktop\n5 - Roteadores\n6 - Outros\n");
scanf("%i", &(*equipamento).equipamento[i].tipo_equip);
fflush(stdin);
while ((*equipamento).equipamento[i].tipo_equip > 6 || ((*equipamento).equipamento[i].tipo_equip < 1))
{
printf("Opcao incorreta\n");
printf("Escolha o tipo de equipamento:\n1 - Impressora\n2 - Notebook\n3 - Servidor\n4 - Desktop\n5 - Roteadores\n6 - Outros\n");
scanf("%i", &(*equipamento).equipamento[i].tipo_equip);
fflush(stdin);
}
printf("Entre com o MAC do equipamento: ");
gets((*equipamento).equipamento[i].mac);
fflush(stdin);
printf("Entre com o consumo de banda: ");
scanf("%f", &(*equipamento).equipamento[i].consumo);
fflush(stdin);
printf ("Entre com a quantidade de IP's: ");
scanf("%i", &(*equipamento).equipamento[i].ipqtd);
fflush(stdin);
while ((*equipamento).equipamento[i].ipqtd > 10)
{
printf("Escolha um numero menor que 10\n");
printf ("Entre com a quantidade de IP's: ");
scanf("%i", &(*equipamento).equipamento[i].ipqtd);
fflush(stdin);
}
printf("1 - DHCP\n2 - FIXO: ");
scanf("%i", &(*equipamento).equipamento[i].ipesc);
fflush(stdin);
while((*equipamento).equipamento[i].ipesc > 2 || (*equipamento).equipamento[i].ipesc < 1)
{
printf("Opcao incorreta\n");
printf("1 - DHCP\n2 - FIXO: ");
scanf("%i", &(*equipamento).equipamento[i].ipesc);
fflush(stdin);
}
for (j = 0; j < (*equipamento).equipamento[i].ipqtd; j++)
{
printf("Digite o %i ip: ", j+1);
gets((*equipamento).equipamento[i].ip[j].ip);
fflush(stdin);
}
system("cls");
printf("ALTERACAO REALIZADA\n\n");
}
q++;
}
if (q == 0)
printf("Equipamento nao encontrado");
}
void listar_ip(Tequipamento equipamento)
{
char opcao, busca_nome[30], busca_ip[15];
int i, m=0, k=0, j;
printf("1 - Busca por nome\n2 - Busca por IP: ");
scanf("%i", &opcao);
fflush(stdin);
while (opcao < 1 || opcao > 2)
{
printf("Opcao Incorreta\n");
printf("1 - Busca por nome\n2 - Busca por IP: ");
scanf("%i", &opcao);
fflush(stdin);
}
if (opcao == 1)
{
printf("Digite o nome do equipamento: ");
gets(busca_nome);
fflush(stdin);
for (i = 0; i < equipamento.qtd; i++)
{
if (strstr((equipamento).equipamento[i].nome_equip, busca_nome) != NULL)
{
printf("%s\n%s\n", (equipamento.equipamento[i].nome_equip, equipamento.equipamento[i].nome_usuario));
for (j = 0; j < (equipamento).equipamento[i].ipqtd; j++)
{
printf("%s\n", (equipamento).equipamento[i].ip[j].ip);
m++;
}
}
}
if (m == 0)
printf("Maquina nao encontrada\n");
}
else
{
printf("Digite o IP do equipamento: ");
gets(busca_ip);
fflush(stdin);
for (i = 0; i < equipamento.qtd; i++)
for (j = 0; j < equipamento.equipamento[i].ipqtd; j++)
if(strstr(equipamento.equipamento[i].ip[j].ip, busca_ip) != NULL)
{
printf("%s\n%s\n", equipamento.equipamento[i].nome_equip, equipamento.equipamento[i].nome_usuario);
k++;
for (j = 0; j < (equipamento).equipamento[i].ipqtd; j++)
printf("%s\n", (equipamento).equipamento[i].ip[j].ip);
}
if (k == 0)
printf("IP nao encontrado\n");
}
system("pause");
system("cls");
}// fim listar ips
void mostrar_dados (Tequipamento equipamento)
{
char nome_equipamento[30];
int i, j, k=0;
for (i = 0; i < equipamento.qtd; i++)
{
printf("Digite o nome do equipamento: ");
gets(nome_equipamento);
if (strstr(equipamento.equipamento[i].nome_equip, nome_equipamento) != NULL)
{
printf("\t%s\n\t%s\n\t%s\n\t%i\n\t%.2f\n\t%s\n", (equipamento).equipamento[i].nome_equip, (equipamento).equipamento[i].login, (equipamento).equipamento[i].nome_usuario, (equipamento).equipamento[i].tipo_equip, (equipamento).equipamento[i].consumo, (equipamento).equipamento[i].mac);
if ((equipamento).equipamento[i].ipesc == 1)
printf ("\tDinamico\n");
else
printf ("\tFixo\n");
for (j = 0; j < (equipamento).equipamento[i].ipqtd; j++)
printf("\t%s\n", (equipamento).equipamento[i].ip[j].ip);
k++;
}
}
if (k == 0)
printf("Maquina nao encontrada\n");
system("pause");
system("cls");
}// fim mostrar dados
void listar_parte(Tequipamento equipamento)
{
char parte_ip[15];
int i, j=0;
printf("Entre com parte do IP: ");
gets(parte_ip);
fflush(stdin);
for (i = 0; i < equipamento.qtd; i++)
{
for (i = 0; i < equipamento.equipamento[i].ipqtd; i++)
if (strstr(equipamento.equipamento[i].ip[i].ip, parte_ip) != NULL)
{
printf("%s\n%s\n%s\n", equipamento.equipamento[i].login, equipamento.equipamento[i].nome_equip, equipamento.equipamento[i].ip[i].ip);
j++;
}
if (j == 0)
printf("IP nao encontrado\n");
}
system("pause");
system("cls");
}//fim da funçao listar parte
void listar_consumo(Tequipamento equipamento)
{
float banda1, banda2;
int i, j=0;
printf("Entre com o primeiro valor: ");
scanf("%f", &banda1);
printf("Entre com o segundo valor: ");
scanf("%f", &banda2);
for (i = 0; i < equipamento.qtd; i++)
{
if (equipamento.equipamento[i].consumo >= banda1 && equipamento.equipamento[i].consumo <= banda2 || equipamento.equipamento[i].consumo <= banda1 && equipamento.equipamento[i].consumo >= banda2)
printf("Nome do equipamento: %s\nNome de usuario: %s\n", equipamento.equipamento[i].nome_equip, equipamento.equipamento[i].nome_usuario);
j++;
}
if (j == 0)
printf("Nao ha maquinas nessa faixa de banda\n");
system("pause");
system("cls");
}// fim listar consumo
void listar_equip(Tequipamento *equipamento)
{
char* tipo_equip;
int i, j;
for (j = 0; j < (*equipamento).equipamento[i].qtdeq; j++)
{
switch ((*equipamento).equipamento[i].tipo_equip)
{
case 1: tipo_equip = "Impressora";
break;
case 2: tipo_equip = "Notebook";
break;
case 3: tipo_equip = "Servidor";
break;
case 4: tipo_equip = "Desktop";
break;
case 5: tipo_equip = "Roteadores";
break;
case 6: tipo_equip = "Outros";
break;
}
printf("\n\tEquipamento: %s\n\tLogin: %s\n\tNome de usuario: %s\n\tTipo: %s\n\tMAC: %s\n\tConsumo: %.2f\n\n", (*equipamento).equipamento[i].nome_equip,(*equipamento).equipamento[i].login, (*equipamento).equipamento[i].nome_usuario, tipo_equip, (*equipamento).equipamento[i].mac, (*equipamento).equipamento[i].consumo);
}
system("pause");
system("cls");
}//fim listar equipamento
void gravar_txt(Tequipamento equipamento, char NomeArquivo[])
{
FILE *Arq;
int i, j;
Arq = fopen(NomeArquivo, "wt");
for (i = 0; i < equipamento.qtd; i++)
{
fprintf(Arq, "%i\n", equipamento.equipamento[i].tipo_equip);
fprintf(Arq, "%i\n", equipamento.equipamento[i].ipqtd);
fprintf(Arq, "%i\n", equipamento.equipamento[i].ipesc);
for (j = 0; j < equipamento.equipamento[i].ipqtd; j++)
fprintf(Arq, "\%s\n", equipamento.equipamento[i].ip[j].ip, 15);
fprintf(Arq, "%s\n", equipamento.equipamento[i].nome_equip);
fprintf(Arq, "%s\n", equipamento.equipamento[i].login);
fprintf(Arq, "%s\n", equipamento.equipamento[i].nome_usuario);
fprintf(Arq, "%s\n", equipamento.equipamento[i].mac);
fprintf(Arq, "\n%.2f\n", equipamento.equipamento[i].consumo);
}
fclose(*Arq);
}// fim gravar txt
void ler_txt(Tequipamento *equipamento, char NomeArquivo[])
{
FILE *Arq;
int i=0, j=0;
Arq = fopen(NomeArquivo, "rt");
for (i = 0; i < (*equipamento).qtd; i++)
{
printf("%i\n", &i);
fscanf(Arq, "%i" , &(*equipamento).equipamento[i].tipo_equip);
fscanf(Arq, "%i" , &(*equipamento).equipamento[i].ipqtd);
fscanf(Arq, "%i" , &(*equipamento).equipamento[i].ipesc);
for (j = 0; j < ((*equipamento).equipamento[i].ipqtd); j++)
fgets((*equipamento).equipamento[i].ip[j].ip, 15, Arq);
fgets((*equipamento).equipamento[i].nome_equip, 30,Arq);
fgets((*equipamento).equipamento[i].login, 30,Arq);
fgets((*equipamento).equipamento[i].nome_usuario, 50,Arq);
fgets((*equipamento).equipamento[i].mac, 1000,Arq);
fscanf(Arq, "%f", &(*equipamento).equipamento[i].consumo);
}
fclose(*Arq);
}// fim ler txt
main ()
{
Tequipamento equipamento;
Tequip equip;
int opcao;
do
{
printf("***********************************************\n");
printf("* 1 -/-> Inserir *\n");
printf("* 2 -/-> Remover *\n");
printf("* 3 -/-> Alterar *\n");
printf("* 4 -/-> Listar equipamento do IP *\n");
printf("* 5 -/-> Mostrar dados de um equipamento *\n");
printf("* 6 -/-> Buscar por parte do IP *\n");
printf("* 7 -/-> Listar consumo de banda *\n");
printf("* 8 -/-> Listar equipamento *\n");
printf("* 9 -/-> Gravar arquivo texto *\n");
printf("* 10 -/-> Ler arquivo texto *\n");
printf("* 11 -/-> Gravar arquivo binario *\n");
printf("* 12 -/-> Ler arquivo binario *\n");
printf("* *\n");
printf("* 0 -/-> Sair *\n");
printf("***********************************************\n\n");
printf("Opcao: ");
scanf("%d", &opcao);
fflush(stdin);
system("cls");
switch (opcao)
{
case 1:inserir(&equipamento);
break;
case 2: remover(&equipamento);
break;
case 3: alterar(&equipamento);
break;
case 4: listar_ip(equipamento);
break;
case 5: mostrar_dados(equipamento);
break;
case 6: listar_parte(equipamento);
break;
case 7: listar_consumo(equipamento);
break;
case 8: listar_equip(&equipamento);
break;
case 9: gravar_txt(equipamento, "prog.txt");
printf("Gravacao realizada\n\n");
break;
case 10:ler_txt(&equipamento, "prog.txt");
printf("Leitura realizada\n\n");
break;
//case 11:gravar_binario(equip, "prog.cf");
// break;
//case 12:ler_binario(equip, "prog.cf");
// break; */
case 0: system("cls");
break;
default: printf("Opcao incorreta\n");
}// fim switch
}while (opcao != 0);
}//FIM DE Main
brigadao