Ir ao conteúdo
  • Cadastre-se

Bruno Eduardo_731343

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

2
  1. E como faço pra mascarar o que é "lixo" pra mim com o fgets? Por que aqui ele pega a linha toda. Manipulando as strings da pra usar dessa maneira que você exemplificou com o fscanf. Mas nunca vi algo parecido com isso (%*4c),onde encontro algo explicando melhor?
  2. Gente,tô tendo uma dificuldade aqui pra ler um arquivo txt e guardar trechos desses arquivo em variáveis: segue o arquivo que estou chamando de lista.txt: BEGIN:VCARD VERSION:3.0 FN:Bruno Eduardo N:;;;; EMAIL;TYPE=INTERNET;TYPE=HOME:[email protected] TEL;TYPE=CELL:+55(98)981060705 END:VCARD Meu desejo é pegar o nome(Bruno Eduardo),Email e Número e guardar em três strings. Segue o código que tenho até agora(pouca coisa,o máximo que consegui fazer foi salvar apenas o nome Eduardo; #include <stdio.h> int main () { char var; char nome[50]; char buff[50]; char num[15]; char email[50]; FILE *arquivo = fopen("lista.vcf","r"); fscanf(arquivo,"%s",buff); fscanf(arquivo,"%s",buff); fscanf(arquivo,"%s %s",buff,nome); printf("%s %s %s",nome,num,email); fclose(arquivo);
  3. Tô com um problema bem simples mas que está me dando dor de cabeça. Tô tentando fazer uma base de contatos em que cada contato seja um elemento de uma lista encadeada,cada contato tem nome,telefone e email. Eu já tinha uma lista pronta,o problema é que ela suportava apenas um caractere,e essa tem que armazenar nome,num e email. Tentei "converter" as listas, ela até está ordenando,porém o programa fecha ao final com uma mensagem de erro,o mesmo acontece se eu começo inserindo já ordenadamente( ex: Alana,Bruno). Não tenho tanta certeza,mas creio que o erro esteja na própria função de inserir. Obrigado desde já. #include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct lista_{ char nome[50]; char num[15]; char email[50]; struct lista_ *prox;} contato;contato *criar(contato dados){ contato *tmp; tmp=(contato*)malloc(sizeof(contato)); fgets(dados.nome,50,stdin); strcpy(tmp->nome,dados.nome); /*fgets(dados.num,15,stdin); strcpy(tmp->num,dados.num); fgets(dados.email,50,stdin); strcpy(tmp->email,dados.email); tmp->prox=NULL; */ return tmp;}void imprimir(contato *cab){ contato *tmp; tmp=cab; while(tmp!=NULL){ printf("---------------------------"); printf("\n%s\n", tmp->nome); //printf("%s \n", tmp->num); //printf("%s \n", tmp->email); printf("---------------------------"); tmp=tmp->prox; }}void remover(contato *cab, contato dado){ contato *tmp = cab; contato *ant; while (tmp != NULL){ ant = tmp; tmp = tmp->prox; if (dado.nome == tmp->nome){ ant->prox = tmp->prox; break; } }}void desalocar(contato **cab){ while(*cab!=NULL){ free(*cab); *cab = (**cab).prox; }}void insereordenado(contato **cab,contato *novo){ contato *tmp = *cab, *ant; contato dado; novo = criar(dado); if (*cab == NULL) { *cab = novo; } else{ ant=NULL; while ((tmp!=NULL) && strcmp(tmp->nome,novo->nome) < 0 ){ ant =tmp; tmp =tmp->prox; } if (ant == NULL){ novo->prox = *cab; *cab = novo; } else { novo->prox = tmp; ant->prox = novo; } }}void buscar(contato **cab,char *busca){ contato *elm = *cab; int frag=0; while(elm != NULL){ if (strcmp(elm->nome,busca) == 0){ frag =1; } elm = elm->prox; } if (frag==1){ printf("Achou!"); } else{ printf("Não Achou!"); }}int main(){ contato *test = NULL; insereordenado(&test,test); insereordenado(&test,test); insereordenado(&test,test); insereordenado(&test,test); system("cls"); imprimir (test);}
  4. Simplesmente perfeito! Muito obrigado,cara! Ajudou bastante!
  5. Galera,tô tentando fazer um programa que remove arquivos repetidos de uma pasta. Tô bem no comecinho e tô com um problema besta : Consegui listar arquivos de um diretório, vi uns artigos sobre dirent.h e consegui fazer isso.Mas agora não tô conseguindo passar os nomes dos arquivos das pastas pra uma matriz de caracteres.Quando tento salvar todas as posições da minha matriz ficam com o nome do última pasta. Tenho aqui o código que tenho até agora. Obrigado desde já. #include <stdio.h>#include <stdlib.h>#include <string.h>#include <dirent.h>int main(){ char dirn[50]; char **mat; int i = 0; DIR *dir = NULL; struct dirent *drnt = NULL; mat =(char**)malloc(sizeof(char*)*20); for(i=0;i<20;i++){ mat[i] =(char*)malloc(sizeof(char)*20); } printf("Caminho da pasta: "); gets(dirn); dir=opendir(dirn); if(dir) { printf("Saída:\n"); while(drnt = readdir(dir)) { //printf("%-20s\n", drnt->d_name); mat[i] = drnt->d_name; i++; } closedir(dir); } else { printf("Não foi possível abrir essa pasta '%s'\n", dirn); } for (i=0;i<50;i++){ printf("%s",mat[i]); } return 0;}

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...