onabi
(usa Outra)
Enviado em 08/12/2011 - 09:00h
Se caso alguem ainda puder ajudar:
consegui desenvolver o codigo, mas apresentei dificuldades nas funções gravacontatos e mostracontatos.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR 200
//definição do tipo de registro
typedef struct contato{
char nome[MAX_STR];
int telefone;
} Contato;
//procedimento que le os contatos do arquivo arq e grava no vetor agn
// n e o parametro que informa o numero de contatos
void lecontatos(Contato agn[], int n, FILE *arq){
int i;
arq = fopen ("arquivo.txt", "r"); //abertura do arquivo - somente leitura
if (arq == NULL) { //erro na abertura do arquivo
perror("teste2.txt");
}
else{
for(i=0;i<n;i++){
fscanf(arq,"%s", agn[i].nome);
fscanf(arq,"%d", &agn[i].telefone);
fclose(arq);
}
}
}
//procedimento de ordenação dos contatos pelo campo telefone
// n e o parametro que informa o numero de contatos
void ordenatelefone(Contato agn[], int n){ //procedimento para organizar agenda
int i,j; //usados nas trocas de ordem
Contato aux;
for(i=0;i<n-1;i++) { //primeiro for da troca
for(j=0;j<n-1;j++) //for interno para a organização de todos os numeros
if (agn[j].telefone > agn[j+1].telefone) {
aux=agn[j];
agn[j]=agn[j+1];
agn[j+1]=aux;
}
}
}
//procedimento de ordenação dos contatos pelo campo nome
// n e o parametro que informa o numero de contatos
void ordenanomes(Contato agn[], int n){ //procedimento para organizar agenda
int i,j; //usados nas trocas de ordem
Contato aux;
for(i=0;i<n-1;i++) { //primeiro for da troca
for(j=0;j<n-1;j++) //for interno para a organização de todos os numeros
if (agn[j].nome > agn[j+1].nome) {
aux=agn[j];
agn[j]=agn[j+1];
agn[j+1]=aux;
}
}
}
//procedimento que grava o vetor de contatos no arquivo de nome indicado pela string caminho
// n e o parametro que informa o numero de contatos
void gravacontatos(Contato agn[], int n, char* caminho){
FILE *fr, *fw;
char c;
if (agn < n) { //se nao informou o numero minimo de argumentos
printf("Uso: %s <arq_origem> <arq_destino>\n", caminho);
}
fr = fopen (arquivo, "r");
fw = fopen (caminho, "w");
//leitura e copia elemento a elemento
while (fscanf(fr, "%c", &c) != EOF)
fprintf(fw,"%c", c);
fclose(fr);
fclose(fw);
}
//procedimento que imprime o vetor de contatos na tela
// n e o parametro que informa o numero de contatos
void mostracontatos(Contato agn[], int n, int numero){
int i;
int numero;
if(numero == 1){
for(i=0;i<n;i++){
printf("%s", agn[i].nome);
printf("%d", agn[i].telefone);
}
}
if(numero == 2){
for(i=0;i<n;i++){
printf("%d", agn[i].telefone);
printf("%s", agn[i].nome);
}
}
}
int main(int argc, char* argv[]){
int n, i, caminho;
int numero, v1[100];
Contato agn[200];
scanf("%d", &n);
void gravacontatos(agn,n);
void lecontatos(agn,n);
scanf("%d", &numero);
void mostracontatos(agn,n,numero);
//INSERIR SEU CÓDIGO AQUI
system("PAUSE");
return 0;
}
//IMPLEMENTAR OS CÓDIGOS DAS FUNÇÕES AQUI