Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leoantunes

Imprimir conteúdo de arquivo sem vogais

Recommended Posts

Como faço pra imprimir tudo que está no arquivo, só que sem as vogais? ai vai o código...

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
typedef struct {
     char nome[100];
     int codigo;
     char endereco[1000];
}tfuncionario;
tfuncionario funcionario[3];

int main (){
int i;
for(i=0;i<3;i++){
    gets(funcionario[i].nome);
    gets(funcionario[i].endereco);
    scanf("%d%*c",&funcionario[i].codigo);
printf("nome:%s endereco:%s codigo:%d\n",funcionario[i].nome,funcionario[i].endereco,funcionario[i].codigo);
}
FILE *cadastro= fopen("cadastro.txt","w");
for(i=0;i<3;i++){
fprintf(cadastro,"%s %s %d\n", funcionario[i].nome,funcionario[i].endereco,funcionario[i].codigo);
}

fclose(cadastro);
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@@leoantunes

 

Se eu entendi... "voce quer ler os dados no arquivo e imprimir na tela os dados sem as vogais, certo ?"...

 

Um jeito facil... (não sei se é o melhor)... é assim:

 

...

 

Seguindo seu raciocinio...

 

Coloquei a ordem para gravar no arquivo codigo,nome e endereco... separado por virgulas....(,)

 

fprintf(cadastro,"%d,%s,%s\n", funcionario.codigo,funcionario.nome,funcionario.endereco);

 

E chamei a funcao listar_arquivo().

 

int main()
{
    int i;
    for(i=0;i<3;i++)
    {
        gets(funcionario[i].nome);
        gets(funcionario[i].endereco);
        scanf("%d%*c",&funcionario[i].codigo);
        printf("nome:%s endereco:%s codigo:%d\n",funcionario[i].nome,funcionario[i].endereco,funcionario[i].codigo);
    }

    FILE *cadastro= fopen("cadastro.txt","w");
    for(i=0;i<3;i++)
    {
        fprintf(cadastro,"%d,%s,%s\n", funcionario[i].codigo,funcionario[i].nome,funcionario[i].endereco);
    }

    fclose(cadastro);

    system(LIMPAR);
    printf("\nListando Arquivo... \n");
    listar_arquivo();

    return 0;
}

 

Na funcao listar_arquivo...

 

Com fgets li todas as linhas do arquivo, e fui gravando o codigo,nome e endereco nas variaveis, até achar virgula (,)..

Para imprimir apenas as vogais.. utilizei a funcao strlen para contar quantos caracteres sao utilizados... e imprir todos que nao sao vogais...

void listar_arquivo()
{
    char buf[MAX];
    char *nome, *endereco;
    int codigo,n,i;

    FILE *arq;

    arq = fopen("cadastro.txt", "r");
    if (arq == NULL)
    {
        printf("ERRO\n");
        return;
    }


    fgets(buf,MAX,arq);
    while (!feof(arq))
    {
        codigo = atoi(strtok(buf, ","));
        nome = strtok(NULL, ",");
        endereco = strtok(NULL, ",");

        printf("\n-------------------------------------------------------------------\n");
        printf("Codigo: %d", codigo);
        
        printf("\nNome: ");
        n = strlen(nome);
        for (i=0; i<n; i++)
        {
            if (nome[i] != 'a' && nome[i] != 'e' && nome[i] != 'i' && nome[i] != 'o' && nome[i] != 'u')
            {
                printf("%c", nome[i]);
            }
        }

        printf("\nEndereco: ");
        n = strlen(endereco);
        for (i=0; i<n; i++)
        {
            if (endereco[i] != 'a' && endereco[i] != 'e' && endereco[i] != 'i' && endereco[i] != 'o' && endereco[i] != 'u')
            {
                printf("%c", endereco[i]);
            }
        }

        fgets(buf,MAX,arq);      
    }

    fclose(arq);
}

 

Código:

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define MAX 80
//windows "cls" - Linux "clear"
#define LIMPAR "cls"

typedef struct {
     char nome[100];
     int codigo;
     char endereco[1000];
}tfuncionario;
tfuncionario funcionario[3];

void listar_arquivo()
{
    char buf[MAX];
    char *nome, *endereco;
    int codigo,n,i;

    FILE *arq;

    arq = fopen("cadastro.txt", "r");
    if (arq == NULL)
    {
        printf("ERRO\n");
        return;
    }


    fgets(buf,MAX,arq);
    while (!feof(arq))
    {
        codigo = atoi(strtok(buf, ","));
        nome = strtok(NULL, ",");
        endereco = strtok(NULL, ",");

        printf("\n-------------------------------------------------------------------\n");
        printf("Codigo: %d", codigo);
        
        printf("\nNome: ");
        n = strlen(nome);
        for (i=0; i<n; i++)
        {
            if (nome[i] != 'a' && nome[i] != 'e' && nome[i] != 'i' && nome[i] != 'o' && nome[i] != 'u')
            {
                printf("%c", nome[i]);
            }
        }

        printf("\nEndereco: ");
        n = strlen(endereco);
        for (i=0; i<n; i++)
        {
            if (endereco[i] != 'a' && endereco[i] != 'e' && endereco[i] != 'i' && endereco[i] != 'o' && endereco[i] != 'u')
            {
                printf("%c", endereco[i]);
            }
        }

        fgets(buf,MAX,arq);      
    }

    fclose(arq);
}

int main()
{
    int i;
    for(i=0;i<3;i++)
    {
        gets(funcionario[i].nome);
        gets(funcionario[i].endereco);
        scanf("%d%*c",&funcionario[i].codigo);
        printf("nome:%s endereco:%s codigo:%d\n",funcionario[i].nome,funcionario[i].endereco,funcionario[i].codigo);
    }

    FILE *cadastro= fopen("cadastro.txt","w");
    for(i=0;i<3;i++)
    {
        fprintf(cadastro,"%d,%s,%s\n", funcionario[i].codigo,funcionario[i].nome,funcionario[i].endereco);
    }

    fclose(cadastro);

    system(LIMPAR);
    printf("\nListando Arquivo... \n");
    listar_arquivo();

    return 0;
}

 

 

 

...

obs: Não testei, pode haver erros....

Se voce nao entendeu... eu comento parte a parte...

...

 

brHUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.