Ir ao conteúdo

Posts recomendados

Postado

Estou tentando criar uma função que busca um nome numa estrutura de string, fazendo a comparação com strcmp. Só que não estou encontrando o meu erro. Ele não encontra o nome que eu quero e imprime na tela a primeira linha que ele leu no arquivo txt.

 

O nome da função é 'pesquisa', quando busco pelo último nome do arquivo, que é 'andre', ela me retorna o primeiro nome da lista.

 

Quem poder ajudar eu agradeço muito.

 

segue o código:

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

typedef struct info_agenda
{
    char nome[100];
    char sobrenome[100];
    char rua[100];
    char numero[100];
    //int numero;
    char complemento[100];
    char bairro[100];
    char cidade[100];
    char estado[30];
    char fone1[100];
    char fone2[100];

} agenda;

//Busca um contato e exibe na tela.
void pesquisa(char pesq[])
{
    int contador=0;

    agenda agen[100];

    FILE *arq_entrada;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo

    while(!feof(arq_entrada))
    {
        fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
               agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
               agen[contador].fone1, agen[contador].fone2);

        //printf(agen[contador].nome);

        if (strcmp(pesq, agen[contador].nome) == 0)
        {
            printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            printf("Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                   agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                   agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);
        }
        else
        {
            printf("Cadastro inexistente!\n");
            break;
        }
        contador++;
        getchar();
        fclose(arq_entrada);
    }
}

//Função que lista os contatos do arquivo.
void listar_contatos()
{

    int contador=0;

    agenda agen[100];

    FILE *arq_entrada;
    FILE *arq_saida;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo
    arq_saida = fopen("agenda.txt", "w"); // Escreve o arquivo

    if (arq_entrada == NULL)
    {
        printf("Arquivo de dados não localizado!\n\n");
        system("pause");
    }
    else
    {
        fprintf(arq_saida, "#################################################################\n"
                "#################### Listando os contatos #######################\n"
                "#################################################################\n\n");

        ///while(fgets(linha, sizeof(linha), arq_entrada) != NULL && strcmp(linha, "#agenda.dat\n") !=0);

        while(!feof(arq_entrada))
        {
            fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
                   agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
                   agen[contador].fone1, agen[contador].fone2);

            printf("\n");

            fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            fprintf(arq_saida,"Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                    agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                    agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);

            contador++;
        }
        printf("\nO programa leu '%d' linha(s)\n", contador);
        fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");

        //fprintf(arq_saida, "Total %-28s= %8.2f\n", espaco, totalGeral);
    }

    fclose(arq_entrada);
    fclose(arq_saida);
}
int main()
{
    char nome[15];
    setlocale(LC_ALL, "Portuguese");
    printf("\nEntre com o Nome: ");
    scanf(" %s", nome);
    scanf("%[^\n]", nome);
    fflush(stdin);
    pesquisa(nome);

    //listar_contatos();
    system("agenda.txt");
    system("pause");
    return 0;
}

Vou deixar o em anexo o arquivo txt.

dados.txt

  • Curtir 1
Postado

Tinha problemas na sua função...

 

Você fez um if dentro do while da função pra comparar o nome lido do arquivo com o que está sendo pesquisado, mas se o nome não fosse igual entra no else, que imediatamente dá um break saindo do ciclo while, então seu programa sempre vai ler apenas 1 nome do arquivo.... Em qualquer casos ele sai imediatamente do while...

 

Outro problema que tinha era que o fclose(arq_entrada) estava dentro do ciclo while, e obviamente deveria estar fora, pois só deve fechar o arquivo após ler os dados dele.

 

//Busca um contato e exibe na tela.
void pesquisa(char pesq[])
{
    int contador=0;

    agenda agen[100];

    FILE *arq_entrada;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo

    while(!feof(arq_entrada))
    {
        fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
               agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
               agen[contador].fone1, agen[contador].fone2);

        //printf(agen[contador].nome);

        if (strcmp(pesq, agen[contador].nome) == 0)
        {
            printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            printf("Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                   agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                   agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);
        }
        //else
        //{
        //    printf("Cadastro inexistente!\n");
        //    break;
        //}
        contador++;
        //getchar();
    }
    fclose(arq_entrada);
}

 

  • Curtir 4
Postado

Muito obrigado @isrnick consegui ajustar o código aqui com a sua dica.

Até agora não encontrei nenhum erro, segue o código:

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

typedef struct info_agenda
{
    char nome[100];
    char sobrenome[100];
    char rua[100];
    char numero[100];
    //int numero;
    char complemento[100];
    char bairro[100];
    char cidade[100];
    char estado[30];
    char fone1[100];
    char fone2[100];

} agenda;

//Busca um contato e exibe na tela.
void pesquisa(char pesq[])
{
    int contador=0;
    int achou=0;

    agenda agen[100];

    FILE *arq_entrada;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo

    while(!feof(arq_entrada))
    {
        fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
               agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
               agen[contador].fone1, agen[contador].fone2);

        strupr(agen[contador].nome);

        if (strcmp(pesq, agen[contador].nome) == 0)
        {
            printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            printf("Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                   agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                   agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);
            achou++;
        }
        contador++;
        //getchar();

    }
    if(achou == 0)
        printf("Cadastro inexistente!\n");
    fclose(arq_entrada);
}

//Função que lista os contatos do arquivo.
void listar_contatos()
{

    int contador=0;

    agenda agen[100];

    FILE *arq_entrada;
    FILE *arq_saida;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo
    arq_saida = fopen("agenda.txt", "w"); // Escreve o arquivo

    if (arq_entrada == NULL)
    {
        printf("Arquivo de dados não localizado!\n\n");
        system("pause");
    }
    else
    {
        fprintf(arq_saida, "#################################################################\n"
                "#################### Listando os contatos #######################\n"
                "#################################################################\n\n");

        ///while(fgets(linha, sizeof(linha), arq_entrada) != NULL && strcmp(linha, "#agenda.dat\n") !=0);

        while(!feof(arq_entrada))
        {
            fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
                   agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
                   agen[contador].fone1, agen[contador].fone2);

            printf("\n");

            fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            fprintf(arq_saida,"Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                    agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                    agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);

            contador++;
        }
        printf("\nO programa leu '%d' linha(s)\n", contador);
        fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");

        //fprintf(arq_saida, "Total %-28s= %8.2f\n", espaco, totalGeral);
    }

    fclose(arq_entrada);
    fclose(arq_saida);
}
int main()
{
    char nome[100];
    setlocale(LC_ALL, "Portuguese");
    printf("\nEntre com o Nome: ");
    scanf("%[^\n]", nome);
    strupr(nome);
    fflush(stdin);
    pesquisa(nome);

    //listar_contatos();
    //system("agenda.txt");
    system("pause");
    return 0;
}

 

  • Curtir 3
  • 2 semanas depois...
Postado

Pessoal se vocês poderem me ajudar novamente eu agradeceria. Estou tentando fazer agora uma função de ordenação das strings em um arquivo separado.

 

Mas acontece um erro ao tentar ler a linha do arquivo na função ORDENAR. Já até comentei o código na parte da ordenação, mas mesmo assim não encontro o erro.

 

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

typedef struct info_agenda
{
    char nome[100];
    char sobrenome[100];
    char rua[100];
    char numero[100];
    //int numero;
    char complemento[100];
    char bairro[100];
    char cidade[100];
    char estado[30];
    char fone1[100];
    char fone2[100];

} agenda;

//Busca um contato e exibe na tela.
void pesquisa(char pesq[])
{
    int contador=0;
    int achou=0;

    agenda agen[100];

    FILE *arq_entrada;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo

    while(!feof(arq_entrada))
    {
        fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
               agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
               agen[contador].fone1, agen[contador].fone2);

        //if (strcmp (pesq, strupr(agen[contador].nome)) == 0)
        if (strstr (strupr(agen[contador].nome), pesq) != NULL)
        {

            printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            printf("Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                   agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                   agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);
            achou++;

        }
        contador++;
        //getchar();

    }
    if(achou != 0);
    printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
    if(achou == 0)
        printf("Contato inexistente!\n");
    fclose(arq_entrada);
}

//Função que lista os contatos do arquivo.
void listar_contatos()
{

    int contador=0;

    agenda agen[100];

    FILE *arq_entrada;
    FILE *arq_saida;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo
    arq_saida = fopen("agenda.txt", "w+"); // Escreve o arquivo

    if (arq_entrada == NULL)
    {
        printf("Arquivo de dados não localizado!\n\n");
        system("pause");
    }
    else
    {
        fprintf(arq_saida, "#################################################################\n"
                "#################### Listando os contatos #######################\n"
                "#################################################################\n\n");

        ///while(fgets(linha, sizeof(linha), arq_entrada) != NULL && strcmp(linha, "#agenda.dat\n") !=0);

        while(!feof(arq_entrada))
        {
            fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
                   agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
                   agen[contador].fone1, agen[contador].fone2);

            printf("\n");

            fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            fprintf(arq_saida,"Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                    agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                    agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);

            contador++;
        }
        printf("O programa leu '%d' linha(s)\n", contador);
        fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");

        //fprintf(arq_saida, "Total %-28s= %8.2f\n", espaco, totalGeral);
    }

    fclose(arq_entrada);
    fclose(arq_saida);
}

void ordenar()
{

    int contador=0;
    int i,j;
    char *linha[500];
    char temp[500];

    FILE *arq_entrada;
    FILE *arq_saida;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo
    arq_saida = fopen("agenda_ordenada.txt", "w+"); // Escreve o arquivo

    if (arq_entrada == NULL)
    {
        printf("Arquivo de dados não localizado!\n\n");
        system("pause");
    }
    else
    {
        while(!feof(arq_entrada))
        {
            //fscanf(arq_entrada,"%[^\n]", linha[contador]);
            fgets(linha[contador],500, arq_entrada) != NULL;
            //printf(linha[contador]);
            printf("\n");
            contador++;
        }
        //ordenar
//        for(i=0; i < contador; i++)
//        {
//            for (j=0; j < (contador-1); j++)
//            {
//
//                if(strcmp(linha[j],linha[j+1]) > 0)
//                {
//                    //strcpy(temp,linha[j]);
//                    //strcpy(linha[j],linha[j+1]);
//                    //strcpy(linha[j+1],temp);
//
//                    strcpy(temp,linha[j+1]);
//                    strcpy(linha[j+1],linha[j]);
//                    strcpy(linha[j],temp);
//                }
//            }
//        }//fim do for
//
//        //imprime
//        for(i=0; i < contador; i++)
//        {
//            fprintf(arq_saida,"%s", linha[i]);
//        }
    }
    //printf("O programa leu '%d' linha(s)\n", contador);
    fclose(arq_entrada);
    fclose(arq_saida);

}//fim da função ordenar


int main()
{
    setlocale(LC_ALL, "Portuguese");
    int op;
    char nome[100];

    while(op!=4)
    {
        printf("\n==============MENU==================\n");
        printf("1-Listar contatos da agenda: \n");
        printf("2-Buscar contatos da agenda: \n");
        printf("3-Para ordenar a agenda:\n");
        printf("4-Sair:\n");
        scanf("%d",&op);

        if(op==1)
        {
            listar_contatos();
            system("agenda.txt");
            system("cls");

        }
        if(op==2)
        {
            fflush(stdin);
            printf("\nEntre com o Nome: ");
            scanf("%[^\n]", nome);
            strupr(nome);
            fflush(stdin);
            pesquisa(nome);
        }
        if(op==3)
        {
            printf("Ordenando a agenda e saindo...\n");
            ordenar();
            exit(0);
        }
        if(op==4)
        {
            printf("Encerrando programa...\n");
            system("pause");
            exit(0);
        }

    }//fim do while de MENU
    return 0;

}//fim da função main

 

o arquivo de dados.txt é o mesmo do primeiro tópico.

  • Curtir 1
Postado

Boa noite, para ler uma linha, use um vetor alocado, seja declarado com malloc ou manualmente, sendo que você não fez a seguir:

char *linha[500];

fgets(linha[contador],500, arq_entrada) != NULL;

 

Você usou uma matriz de string, sendo que a matriz foi alocada com 500 linhas, mas a quantidade de letras para cada linha não foi definida, sendo feito do seguinte modo:

char linha[500][100]; //linhaxletras

ou

char *linha[500];

linha[x] = (char *)malloc(sizeof(char)*TAM_MAX_LETRAS));

 

no fgets, pode deixar como está:

fgets(linha[contador],500, arq_entrada)

Postado

@TYSQUARE89 consegui fazer a leitura corretamente do arquivo, muito obrigado. Mas agora tenho outro problema, na questão da ordenação.

Necessariamente o arquivos dados.txt tem que ter uma linha em branco no final para a ordenação funcionar corretamente, senão houver essa linha linha em branco, ele acaba por juntar 2 linhas numa só. Se você puder me ajudar, eu agradeceria muito. Segue o código atualizado:

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

typedef struct info_agenda
{
    char linha[500];
    char nome[100];
    char sobrenome[100];
    char rua[100];
    char numero[100];
    char complemento[100];
    char bairro[100];
    char cidade[100];
    char estado[30];
    char fone1[100];
    char fone2[100];

} agenda;

//Busca um contato e exibe na tela.
void pesquisa(char pesq[])
{
    int contador=0;
    int achou=0;

    agenda agen[100];

    FILE *arq_entrada;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo

    while(!feof(arq_entrada))
    {
        fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
               agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
               agen[contador].fone1, agen[contador].fone2);

        //if (strcmp (pesq, strupr(agen[contador].nome)) == 0)
        if (strstr (strupr(agen[contador].nome), pesq) != NULL)
        {

            printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            printf("Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                   agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                   agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);
            achou++;

        }
        contador++;
        //getchar();

    }
    if(achou != 0);
    printf("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
    if(achou == 0)
        printf("Contato inexistente!\n");
    fclose(arq_entrada);
}

//Função que lista os contatos do arquivo.
void listar_contatos()
{

    int contador=0;

    agenda agen[100];

    FILE *arq_entrada;
    FILE *arq_saida;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo
    arq_saida = fopen("agenda.txt", "w+"); // Escreve o arquivo

    if (arq_entrada == NULL)
    {
        printf("Arquivo de dados não localizado!\n\n");
        system("pause");
    }
    else
    {
        fprintf(arq_saida, "#################################################################\n"
                "#################### Listando os contatos #######################\n"
                "#################################################################\n\n");

        ///while(fgets(linha, sizeof(linha), arq_entrada) != NULL && strcmp(linha, "#agenda.dat\n") !=0);

        while(!feof(arq_entrada))
        {
            fscanf(arq_entrada,"%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,],\n", agen[contador].nome, agen[contador].rua,
                   agen[contador].numero, agen[contador].complemento, agen[contador].bairro, agen[contador].cidade, agen[contador].estado,
                   agen[contador].fone1, agen[contador].fone2);

            printf("\n");

            fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
            fprintf(arq_saida,"Nome.......: %s\nLogradouro.: %s\nNumero.....: %s\nComplemento: %s\nBairro.....: %s\nCidade.....: %s\nEstado.....: %s\nFone 1.....: %s\nFone 2.....: %s\n",
                    agen[contador].nome, agen[contador].rua, agen[contador].numero, agen[contador].complemento,
                    agen[contador].bairro, agen[contador].cidade, agen[contador].estado, agen[contador].fone1, agen[contador].fone2);

            contador++;
        }
        system("cls");
        printf("O programa leu '%d' linha(s)\n", contador);
        fprintf(arq_saida,"+++++++++++++++++++++++++++++++++++++++++++++++++++\n");

        //fprintf(arq_saida, "Total %-28s= %8.2f\n", espaco, totalGeral);
    }

    fclose(arq_entrada);
    fclose(arq_saida);
}

void ordenar()
{

    int contador=0;
    int i,j;
    char temp[500];

    agenda agen[1100];

    FILE *arq_entrada;
    FILE *arq_saida;

    arq_entrada = fopen("dados.txt", "r"); // Abre o arquivo
    arq_saida = fopen("agenda_ordenada.txt", "w+"); // Escreve o arquivo

    if (arq_entrada == NULL)
    {
        printf("Arquivo de dados não localizado!\n\n");
        system("pause");
    }
    else
    {

        while(fgets(agen[contador].linha, sizeof(agen[contador].linha), arq_entrada) != NULL)
        {
            //printf("%s\n", agen[contador].linha);
            contador++;
        }
        ///ordenar
        for(i=1; i < contador; i++)
        {
            for (j=0; j < (contador -1); j++)
            {

                if(strcmp(agen[j].linha,agen[j+1].linha) > 0)
                {
                    strcpy(temp,agen[j].linha);
                    strcpy(agen[j].linha,agen[j+1].linha);
                    strcpy(agen[j+1].linha,temp);
                }
            }
        }///fim do for

        ///imprimir
        for(i=0; i < contador; i++)
        {
            fprintf(arq_saida,"%s", agen[i].linha);
        }

    }
    printf("\nO programa leu '%d' linha(s)\n", contador);
    fclose(arq_entrada);
    fclose(arq_saida);

}//fim da função ordenar


int main()
{
    setlocale(LC_ALL, "Portuguese");
    int op;
    char nome[100];

    while(op!=4)
    {
        printf("\n==============MENU==================\n");
        printf("1-Listar contatos da agenda: \n");
        printf("2-Buscar contatos da agenda: \n");
        printf("3-Para ordenar a agenda:\n");
        printf("4-Sair:\n");
        scanf("%d",&op);

        if(op==1)
        {
            listar_contatos();
            system("agenda.txt");
            system("cls");

        }
        if(op==2)
        {
            fflush(stdin);
            printf("\nEntre com o Nome: ");
            scanf("%[^\n]", nome);
            strupr(nome);
            fflush(stdin);
            system("cls");
            pesquisa(nome);
        }
        if(op==3)
        {
            printf("Ordenando a agenda e saindo...\n");
            ordenar();
            system("agenda_ordenada.txt");
        }
        if(op==4)
        {
            printf("Encerrando programa...\n");
            system("pause");
            exit(0);
        }

    }//fim do while de MENU
    return 0;

}//fim da função main

 

Postado
7 horas atrás, TYSQUARE89 disse:

Acredito que seja apenas fazer um line break, na função ordenar, assim:

 

fprintf(arq_saida,"%s\n", agen[i].linha);

 

Fazendo isso o arquivo de saída vai ficar cheio de linhas em brancos. E mesmo assim com duas linhas juntas.

 

Captura de tela 2017-09-17 09.11.22.png

Visitante
Este tópico está impedido de receber novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!