Ir ao conteúdo
  • Cadastre-se

C++ Fazer com que um programa leia o arquivo txt e passe-o para csv


Posts recomendados

5 minutos atrás, Weverson Meireles disse:
fprintf(arquivo, "%i%c", mat[i][j], delimitador);

 

Eu te expliquei em detalhes como fazer, e com exemplos.

 

E você está de volta com esse fprintf() colocando um delimitador depois de mat[i][j] que é um int.

 

Se você tem que colocar QUATRO delimitadores para separar os CINCO campos em cada linha como nos exemplos que te mostrei um certo número de vezes, porque está colocando um único delimitador num loop para cada inteiro de uma hipotética matriz se tudo é texto?

Que vai fazer, por exemplo, com os nomes das pessoas? 

Link para o comentário
Compartilhar em outros sites

 
2 horas atrás, arfneto disse:

separar os CINCO campos

Eu tentei também criar um código com quatro delimitadores para separar os campos mas não esta ao menos lendo quando mudo para editar o arquivo todo o seu conteúdo some ou de outro modo que fiz, faz com que apareça algo aleatório sem as strings.  

 

 

int delimitador = ',';
int fixo[3];
int matricula[10];
char nome[50];
int data[10];
char f[2];

Não estou conseguindo montar a estrutura com isso. Acredito que seja essa a ideia que quer me passar

Link para o comentário
Compartilhar em outros sites

@Weverson Meireles  Pensou em postar esse código?

 

9 minutos atrás, Weverson Meireles disse:

Eu tentei também criar um código com quatro delimitadores para separar os campos mas não esta ao menos lendo quando mudo para editar o arquivo todo o seu conteúdo some ou de outro modo que fiz, faz com que apareça algo aleatório sem as strings

 

Entenda que o programa que postou quando abriu o tópico aqui no forum já lia todos os dados.

 

Como o programa agora faz muito menos que o original?

 

 

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, arfneto disse:

Está de novo usando aquele loop para imprimir inteiros aleatórios usando rand()

Não, descartei todas os outros e estou utilizando somente o que montei a principio. Creio que o erro seja como estou montando mesmo. 

Antes estava colocando o delimitador no final, agora estou tentando coloca-lo corretamente, mas aparece estes caracteres que lhe mostrei na imagem 

Link para o comentário
Compartilhar em outros sites

agora, Weverson Meireles disse:

Não, descartei todas os outros e estou utilizando somente o que montei a principio. Creio que o erro seja como estou montando mesmo. 

Antes estava colocando o delimitador no final, agora estou tentando coloca-lo corretamente, mas aparece estes caracteres que lhe mostrei na imagem 

 

 E não vai mesmo postar o programa? ...

acho que sabe que essa imagem de nada serve

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, arfneto disse:

 

 E não vai mesmo postar o programa? ...

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

int main (void){
    

FILE *arquivo;

arquivo = fopen ("ARQ01.txt", "r");

if(arquivo == NULL){
    printf("não foi possível abrir o arquivo\n");
    getchar();
    exit(0);
}

char frase[2000];


while (fgets(frase, 2000, arquivo) != NULL){
	

int delimitador=',';
int fixo[3];
int matricula[10];
char nome[50];
int data[10];
char f[2];

//*******************************************************
char *p;
char *v = strchr(p, ' '); // encontra o primeiro espeço
    if (v) *v = ',';          // substitui por virgula
//*******************************************************

printf("%s", frase);



}




fclose(arquivo);

}	

Nesta parte entre "//**" tentei fazer a substituição do espaço por virgula. Delimitando os campos aconteceu aquele erro que informei.

Link para o comentário
Compartilhar em outros sites

Eu sei que já falei isso, mas porque mudou o delimitador para ';'? 

 

Se não tem nada no enunciado acho que sabe que o delimitador é a vírgula...

 

Veja esse sofisticado programa, com uma linha dos dados que você postou

 

#include <stdio.h>
int main(void)
{
    char frase[80] = "002 62010992 Neusa Gomide Canario 02/04/2002 F";
    char objetivo[80] = "002,62010992,Neusa Gomide Canario,02/04/2002,F";
    printf("\
   antes: %s\
\n\
\n\
  depois: %s\n\
objetivo: %s\n", frase, frase, objetivo);
    return 0;
}

 

Que mostra

 

   antes: 002 62010992 Neusa Gomide Canario 02/04/2002 F

  depois: 002 62010992 Neusa Gomide Canario 02/04/2002 F
objetivo: 002,62010992,Neusa Gomide Canario,02/04/2002,F

 

Entenda isso... Rode isso até chegar ao objetivo... Nada mais

 

 

2 minutos atrás, Weverson Meireles disse:
char *p;
char *v = strchr(p, ' '); // encontra o primeiro espeço
    if (v) *v = ',';          // substitui por virgula

 

para que uma função para algo que vai trocar????

 

Use um ponteiro para o próprio texto...

3 minutos atrás, Weverson Meireles disse:

Delimitando os campos aconteceu aquele erro que informei.

 

Não vejo onde está fazendo isso de delimitar campos...

 

Se quer ajuda sobre esse novo problema poste o óbvio, o programa que mostrou aquela tela ... Ajude os outros a ajudarem você.

 

 

Link para o comentário
Compartilhar em outros sites

16 minutos atrás, arfneto disse:
char frase[80] = "002 62010992 Neusa Gomide Canario 02/04/2002 F";
    char objetivo[80] = "002,62010992,Neusa Gomide Canario,02/04/2002,F";

Por qual motivo aqui atribuiu os valores no char frase?

Eu realmente não estou conseguindo pegar o contexto  do arquivo lido linha por linha, delimita-lo mesmo tendo atribuído tamanho nos campos. 

Mostrado no meu ultimo código enviado.

 

int delimitador=',';
int fixo[3];
int matricula[10];
char nome[50];
int data[10];
char f[2];

Somente declarei

Link para o comentário
Compartilhar em outros sites

8 minutos atrás, Weverson Meireles disse:

Por qual motivo aqui atribuiu os valores no char frase?

 

???

 

o objetivo do seu programa é pegar a tal frase que é a linha lida e transformar no objetivo, que tem os campos separados e você pode testar depois da maneira que eu expliquei.

 

E você não sabe fazer isso. 

 

Se você focar no ponto que não sabe fazer, que é exatamente o que o programa de 5 linhas que te mostrei faz, sua vida é mais simples.

 

 

 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Weverson Meireles disse:

Compreendi, eu estava tentando delimitar todo o arquivo .txt que me foi fornecido, de uma vez, sem saber delimitar ao menos uma frase

 

Sim. Você vai fazer a mesma coisa para todas as linhas.

 

Então é mais simples pegar uma linha só e resolver até o fim. 

 

Você tem um livro? Recomendo muito que tenha um livro ou dois. E leia e rode programas de outros.

 

Computadores são muito obedientes, mas você precisa ter um plano ao escrever um programa

 

Veja e rode esse programa até entender:

 

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

int main(void)
{
    const char dlm = ',';  // o delimitador
    char frase[80] = "002 62010992 Neusa Gomide Canario 02/04/2002 F";
    char objetivo[80] =
        "002,62010992,Neusa Gomide Canario,02/04/2002,F";
    printf(
        "\
   antes: %s\
\n\
objetivo: %s\n",
        frase, objetivo);

    char* p = &frase[0];  // aponta pro inicio da linha

    // procura o primeiro branco

    while (*p != 0)
    {
        if (*p != ' ')
            p = p + 1;  // avanca: não e branco
        else
        {
            *p = dlm;    // troca pelo delimitador
            p  = p + 1;  // avanca
            break;
        }
    };
    // se saiu sem achar o branco o arquivo
    // // tem problemas: cancela
    if (*p == 0) return -1;

    // procura o segundo branco

    while (*p != 0)
    {
        if (*p == ' ')
        {
            *p = dlm;  // troca
            p  = p + 1;
            break;  // sai do loop
        }
        p = p + 1;  // avanca
    };

    // agora tem o lance do nome que pode ter varios
    // brancos entao o fácil: seguir pela direita

    int fim = strlen(frase) - 1;  // aponta pra letra final
    // esta claro que o ultimo campo e uma letrinha
    // entao o delimitador vem antes, e
    // aponta p para o lugar certo:
    p  = frase + fim - 1;
    *p = dlm;    // o quarto campo. falta 1
    p  = p - 1;  // agora esta no fim da data
    while (p != frase)
    {  // procura para tras ate o inicio
        if (*p == ' ')
        {
            *p = dlm;  // troca
            break;     // sai do loop
        }
        p = p - 1;  // volta uma letra
    }

    printf(
        "\n\n\n\
objetivo: %s\
\n\
  depois: %s\n",
        objetivo, frase);

    // se deu certo a frase ficou igual ao objetivo
    if (strcmp(frase, objetivo) == 0)
        printf("ok! frase igual ao esperado!\n");
    else
        printf("Deu erro!! :(\n");

    return 0;
}

 

O resultado

 

   antes: 002 62010992 Neusa Gomide Canario 02/04/2002 F
objetivo: 002,62010992,Neusa Gomide Canario,02/04/2002,F



objetivo: 002,62010992,Neusa Gomide Canario,02/04/2002,F
  depois: 002,62010992,Neusa Gomide Canario,02/04/2002,F
ok!

 

Ele tenta colocar os delimitadores e se conseguir escreve "ok!"

 

Escrevi as 4 partes separadas para ajudar você a entender

Link para o comentário
Compartilhar em outros sites

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

int main(void)
{
    const char dlm = ',';  // o delimitador
    char frase[80] = "002 62010992 Neusa Gomide Canario 02/04/2002 F";
    char objetivo[80] =
        "002,62010992,Neusa Gomide Canario,02/04/2002,F";
    printf(
        "\
   antes: %s\
\n\
objetivo: %s\n",
        frase, objetivo);

    char* p = &frase[0];  // aponta pro inicio da linha

    // procura o primeiro branco

    while (*p != 0)
    {
        if (*p != ' ')
            p = p + 1;  // avanca: não e branco
        else
        {
            *p = dlm;    // troca pelo delimitador        [1]
            p  = p + 1;  // avanca
            break;
        }
    };
    // se saiu sem achar o branco o arquivo
    // // tem problemas: cancela
    if (*p == 0) return -1;

    // procura o segundo branco

    while (*p != 0)
    {
        if (*p == ' ')
        {
            *p = dlm;  // troca                            [2]
            p  = p + 1;
            break;  // sai do loop
        }
        p = p + 1;  // avanca
    };
    // se saiu sem achar o branco o arquivo
    // // tem problemas: cancela
    if (*p == 0) return -1;

    // agora tem o lance do nome que pode ter varios
    // brancos entao o fácil: seguir pela direita

    int fim = strlen(frase) - 1;  // aponta pra letra final
    // esta claro que o ultimo campo e uma letrinha
    // entao o delimitador vem antes, e
    // aponta p para o lugar certo:
    p  = frase + fim - 1;
    *p = dlm;    // o quarto campo. falta 1                    [3]
    p  = p - 1;  // agora esta no fim da data
    while (p != frase)
    {  // procura para tras ate o inicio
        if (*p == ' ')
        {
            *p = dlm;  // troca                                [4]
            break;     // sai do loop
        }
        p = p - 1;  // volta uma letra
    }

    printf(
        "\n\n\n\
objetivo: %s\
\n\
  depois: %s\n",
        objetivo, frase);

    // se deu certo a frase ficou igual ao objetivo
    if (strcmp(frase, objetivo) == 0)
        printf("ok! frase igual ao esperado!\n");
    else
        printf("Deu erro!! :(\n");

    return 0;
}

 

;) até numerei os caras

 

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Weverson Meireles disse:

Se puder ajudar também, agradeço muito.

Estou tendo muita dificuldade. Estou entrando nesse mundo de programação agora

Ok, uma possível solução:

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

int main() {
    char linha[100] = "02   223 Maria Silva         02/10/1830 F";
    char reg[4];
    char matr[5];
    char nome[21];
    char dtn[11];
    sscanf (linha,"%s%s", reg, matr);
    strncpy(nome, linha + 9, 20);
    nome[20] = 0;
    for (int c = 19; c >= 0; c--) {
        if (nome[c] == ' ')
            nome[c] = 0;
        else
            break;
    }
    strncpy(dtn, linha + 29, 10);
    dtn[10] = 0;
    printf("002,%s,%s,%sF\n", matr, nome, dtn);
    return 0;
}

Você teria que ajustar o tamanho dos campos e o contador do for para 49, e o índice de corte da string da data.

 

O primeiro e o último campo possuem valores fixos, então pode colocá-los diretamente. E se for colocar o cabeçalho também pode colocá-lo diretamente.

 

E o campo Contador, aparece no PDF mas não está presente no txt.

Link para o comentário
Compartilhar em outros sites

Versão ajustada.

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

int main() {
    char linha[100] = "002   41615446   Jordan Belchiorinho Lagos                         02/09/1996           F";
    char reg[4];
    char matr[11];
    char nome[51];
    char dtn[11];
    sscanf (linha,"%s%s", reg, matr);
    strncpy(nome, linha + 17, 50);
    nome[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nome[c] == ' ')
            nome[c] = 0;
        else
            break;
    }
    strncpy(dtn, linha + 67, 10);
    dtn[10] = 0;
    printf("002,%s,%s,%s,F\n", matr, nome, dtn);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Em 05/11/2021 às 22:30, JorgeGus disse:

Versão ajustada.

Desculpe não ter conseguido testar no final de semana. Estou abrindo ele e agora vou testar com o arquivo inteiro. Consegui compreender como fazer por parte. Mas na hora de inserir no todo não entra na minha cabeça 

 

Acredito que eu não precise de repetir todo esse processo para cada linha, acredito que seja possível ler tudo e realizar isso. Só não estou tendo ideia de como

Em 05/11/2021 às 19:00, arfneto disse:

;) até numerei os caras

Top, consegui compreender como delimitar a linha. Agora quero encaixar isso para editar todo o meu arquivo, todas as linhas de vez.

Desculpe não ter conseguido mexer no final de semana.

Link para o comentário
Compartilhar em outros sites

Em 05/11/2021 às 22:30, JorgeGus disse:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char linha[100] = "002   41615446   Jordan Belchiorinho Lagos                         02/09/1996           F";
    char reg[4];
    char matr[11];
    char nome[51];
    char dtn[11];
    sscanf (linha,"%s%s", reg, matr);
    strncpy(nome, linha + 17, 50);
    nome[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nome[c] == ' ')
            nome[c] = 0;
        else
            break;
    }
    strncpy(dtn, linha + 67, 10);
    dtn[10] = 0;
    printf("002,%s,%s,%s,F\n", matr, nome, dtn);
    return 0;
}

 

 

 

Acha que seria possível eu utilizar essa estrutura que você criou e inserir na minha para ler todo o arquivo e repassa-lo com ","?

 

int main (void){
    

FILE *arquivo;

arquivo = fopen ("ARQ01.txt", "r");

if(arquivo == NULL){
    printf("não foi possível abrir o arquivo\n");
    getchar();
    exit(0);
}

char frase[2000];

while (fgets(frase, 2000, arquivo) != NULL){

printf("%s", frase); 

}

fclose(arquivo);

}	

 

Anexei o arquivo também

 

ARQ01.txt

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Weverson Meireles disse:

Top, consegui compreender como delimitar a linha. Agora quero encaixar isso para editar todo o meu arquivo, todas as linhas de vez

 

Apenas coloque isso dentro do (único) loop do seu programa original. Os pontos já estão até numerados. É só isso: [1] [2] [3] [4] ...

Link para o comentário
Compartilhar em outros sites

@Weverson Meireles Acho que você continua pensando em processar o arquivo inteiro de uma só vez e isso seria mais difícil, basta colocar esse código dentro do while, e mudar o nome de sua variável de frase para linha. Assim cada registro (ou linha) vai ser processado de cada vez.

 

Além disso:

Coloque um fgets fora do while para descartar a linha do cabeçalho;

Crie outro arquivo para receber os registros em formato CSV;

E use fprintf no lugar de printf para gravar os registros, nesse caso o primeiro parâmetro é o nome do arquivo de destino.

Link para o comentário
Compartilhar em outros sites

54 minutos atrás, JorgeGus disse:

Acho que você continua pensando em processar o arquivo inteiro de uma só vez e isso seria mais difícil, basta colocar esse código dentro do while, e mudar o nome de sua variável de frase para linha. Assim cada registro (ou linha) vai ser processado de cada vez.

 

Além disso:

Coloque um fgets fora do while para descartar a linha do cabeçalho;

Crie outro arquivo para receber os registros em formato CSV;

E use fprintf no lugar de printf para gravar os registros, nesse caso o primeiro parâmetro é o nome do arquivo de destino.

Talvez  seja isso, na minha cabeça, pege o arquivo inteiro seria mais simples mas não tenho conhecimento para isso. 

E pelo que me demonstraram é mais fácil fazer um por um. 

Estou montando para ler linha por linha, assim que terminar, envio o resultado a vocês. 

Link para o comentário
Compartilhar em outros sites

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

int main() {
    
    FILE *arquivo;

arquivo = fopen ("ARQ01.txt", "r");

if(arquivo == NULL){
    printf("não foi possível abrir o arquivo\n");
    getchar();
    exit(0);
}
    
    char linha[100] = "002   12012435   Nilo Pontes Sousa                                 17/02/2000           F";
    char reg[4];
    char matr[11];
    char nome[51];
    char dtn[11];
    
    sscanf (linha,"%s%s", reg, matr);
    strncpy(nome, linha + 17, 50);
    nome[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nome[c] == ' ')
            nome[c] = 0;
        else
            break;
    }
    
    strncpy(dtn, linha + 67, 10);
    dtn[10] = 0;
    printf("002,%s,%s,%s,F\n", matr, nome, dtn);
    
    //****************************************************************************************************************
    
    char linhaum[100] = "002   21910420   Miguel Veiga Carrilho                             26/11/1997           F";

    char regum[4];
    char matrum[11];
    char nomeum[51];
    char dtnum[11];
    
    sscanf (linhaum,"%s%s", regum, matrum);
    strncpy(nomeum, linhaum + 17, 50);
    nomeum[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeum[c] == ' ')
            nomeum[c] = 0;
        else
            break;
    }
    
    strncpy(dtnum, linhaum + 67, 10);
    dtnum[10] = 0;
    printf("002,%s,%s,%s,F\n", matrum, nomeum, dtnum);
    
    //********************************************************************************************************************
    
     char linhadois[101] = "002   31813713   Teresinha Fragoso Fontinha                        14/01/1997           F";

    char regdois[4];
    char matrdois[11];
    char nomedois[51];
    char dtndois[11];
    
    sscanf (linhadois,"%s%s", regdois, matrdois);
    strncpy(nomedois, linhadois + 17, 50);
    nomedois[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedois[c] == ' ')
            nomedois[c] = 0;
        else
            break;
    }
    
    strncpy(dtndois, linhadois + 67, 10);
    dtndois[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdois, nomedois, dtndois);
    
    //**********************************************************************************************************************
    
     char linhatres[100] = "002   41615446   Jordan Belchiorinho Lagos                         02/09/1996           F";

    char regtres[4];
    char matrtres[11];
    char nometres[51];
    char dtntres[11];
    
    sscanf (linha,"%s%s", regtres, matrtres);
    strncpy(nometres, linhatres + 17, 50);
    nomeum[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nometres[c] == ' ')
            nometres[c] = 0;
        else
            break;
    }
    
    strncpy(dtntres, linhatres + 67, 10);
    dtntres[10] = 0;
    printf("002,%s,%s,%s,F\n", matrtres, nometres, dtntres);
    
    //************************************************************************************************************************
    
    char linhaquatro[100] = "002   52011977   Iara Quinteiro Melancia                           14/02/1996           F";

    char regquatro[4];
    char matrquatro[11];
    char nomequatro[51];
    char dtnquatro[11];
    
    sscanf (linhaquatro,"%s%s", regquatro, matrquatro);
    strncpy(nomequatro, linhaquatro + 17, 50);
    nomequatro[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomequatro[c] == ' ')
            nomequatro[c] = 0;
        else
            break;
    }
    
    strncpy(dtnquatro, linhaquatro + 67, 10);
    dtnquatro[10] = 0;
    printf("002,%s,%s,%s,F\n", matrquatro, nomequatro, dtnquatro);
    
    //*************************************************************************************************************************
    
    char linhacinco[100] = "002   62010992   Neusa Gomide Canario                              02/04/2002           F";

    char regcinco[4];
    char matrcinco[11];
    char nomecinco[51];
    char dtncinco[11];
    
    sscanf (linhacinco,"%s%s", regcinco, matrcinco);
    strncpy(nomecinco, linhacinco + 17, 50);
    nomecinco[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomecinco[c] == ' ')
            nomecinco[c] = 0;
        else
            break;
    }
    
    strncpy(dtncinco, linhacinco + 67, 10);
    dtncinco[10] = 0;
    printf("002,%s,%s,%s,F\n", matrcinco, nomecinco, dtncinco);
    
    //***************************************************************************************************************************
    
    char linhaseis[100] = "002   71711935   Abdul Modesto Pureza                              27/01/1992           F";

    char regseis[4];
    char matrseis[11];
    char nomeseis[51];
    char dtnseis[11];
    
    sscanf (linhaseis,"%s%s", regseis, matrseis);
    strncpy(nomeseis, linhaseis + 17, 50);
    nomeseis[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeseis[c] == ' ')
            nomeseis[c] = 0;
        else
            break;
    }
    
    strncpy(dtnseis, linhaseis + 67, 10);
    dtnseis[10] = 0;
    printf("002,%s,%s,%s,F\n", matrseis, nomeseis, dtnseis);
    
    //****************************************************************************************************************************
    
    char linhasete[100] = "002   82020657   Ludmila Frade Capistrano                          09/05/1995           F";

    char regsete[4];
    char matrsete[11];
    char nomesete[51];
    char dtnsete[10];
    
    sscanf (linhasete,"%s%s", regsete, matrsete);
    strncpy(nomesete, linhasete + 17, 50);
    nomesete[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomesete[c] == ' ')
            nomesete[c] = 0;
        else
            break;
    }
    
    strncpy(dtnsete, linhasete + 67, 10);
    dtnsete[10] = 0;
    printf("002,%s,%s,%s,F\n", matrsete, nomesete, dtnsete);
    
    //******************************************************************************************************************************
    
    char linhaoito[100] = "002   91704871   Kyami Furtado Mafra                               19/05/1978           F";

    char regoito[4];
    char matroito[11];
    char nomeoito[51];
    char dtnoito[10];
    
    sscanf (linhaoito,"%s%s", regoito, matroito);
    strncpy(nomeoito, linhaoito + 17, 50);
    nomeoito[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeoito[c] == ' ')
            nomeoito[c] = 0;
        else
            break;
    }
    
    strncpy(dtnoito, linhaoito + 67, 10);
    dtnoito[10] = 0;
    printf("002,%s,%s,%s,F\n", matroito, nomeoito, dtnoito);
    
    // *****************************************************************************************************************************
    
      char linhanove[100] = "002  101615740   Carmen Guedelha Sacadura                          16/03/1997           F";

    char regnove[4];
    char matrnove[11];
    char nomenove[51];
    char dtnnove[10];
    
    sscanf (linhanove,"%s%s", regnove, matrnove);
    strncpy(nomenove, linhanove + 17, 50);
    nomenove[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomenove[c] == ' ')
            nomenove[c] = 0;
        else
            break;
    }
    
    strncpy(dtnnove, linhanove + 67, 10);
    dtnnove[10] = 0;
    printf("002,%s,%s,%s,F\n", matrnove, nomenove, dtnnove);
    
    //***********************************************************************************************************************************
    
         char linhadez[100] = "002  111911901   Jonas Rosa Regodeiro                              18/05/1992           F";

    char regdez[4];
    char matrdez[11];
    char nomedez[51];
    char dtndez[10];
    
    sscanf (linhadez,"%s%s", regdez, matrdez);
    strncpy(nomedez, linhadez + 17, 50);
    nomedez[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedez[c] == ' ')
            nomedez[c] = 0;
        else
            break;
    }
    
    strncpy(dtndez, linhadez + 67, 10);
    dtndez[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdez, nomedez, dtndez);
    
    // *************************************************************************************************************************************
    
    char linhaonze[100] = "002  122011094   Lucia Redondo Lisboa                              06/09/1997           F";

    char regonze[4];
    char matronze[11];
    char nomeonze[51];
    char dtnonze[10];
    
    sscanf (linhaonze,"%s%s", regonze, matronze);
    strncpy(nomeonze, linhaonze + 17, 50);
    nomeonze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeonze[c] == ' ')
            nomeonze[c] = 0;
        else
            break;
    }
    
    strncpy(dtnonze, linhaonze + 67, 10);
    dtnonze[10] = 0;
    printf("002,%s,%s,%s,F\n", matronze, nomeonze, dtnonze);
    
    // ***************************************************************************************************************************************
        char linhajose[100] = "002  131714919   Josefina Loio Banha                               09/12/1996           F";

    char regjose[4];
    char matrjose[11];
    char nomejose[51];
    char dtnjose[10];
    
    sscanf (linhajose,"%s%s", regjose, matrjose);
    strncpy(nomejose, linhajose + 17, 50);
    nomejose[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomejose[c] == ' ')
            nomejose[c] = 0;
        else
            break;
    }
    
    strncpy(dtnjose, linhajose + 67, 10);
    dtnjose[10] = 0;
    printf("002,%s,%s,%s,F\n", matrjose, nomejose, dtnjose);
    
    //****************************************************************************************************************************************
    
       char linhatreze[100] = "002  141512419   Paloma Tabosa Quintal                             29/09/1998           F";

    char regtreze[4];
    char matrtreze[11];
    char nometreze[51];
    char dtntreze[10];
    
    sscanf (linhatreze,"%s%s", regtreze, matrtreze);
    strncpy(nometreze, linhatreze + 17, 50);
    nometreze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nometreze[c] == ' ')
            nometreze[c] = 0;
        else
            break;
    }
    
    strncpy(dtntreze, linhatreze + 67, 10);
    dtntreze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrtreze, nometreze, dtntreze);
    
    // *******************************************************************************************************************************************
    
    char linhaquator[100] = "002  152112795   Flavia Ornelas Ribeiro                            07/03/2001           F";

    char regquator[4];
    char matrquator[11];
    char nomequator[51];
    char dtnquator[10];
    
    sscanf (linhaquator,"%s%s", regquator, matrquator);
    strncpy(nomequator, linhaquator + 17, 50);
    nomequator[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomequator[c] == ' ')
            nomequator[c] = 0;
        else
            break;
    }
    
    strncpy(dtnquator, linhaquator + 67, 10);
    dtnquator[10] = 0;
    printf("002,%s,%s,%s,F\n", matrquator, nomequator, dtnquator);
    
    // ********************************************************************************************************************************************
    
        char linhaquinze[100] = "002  162011978   Salomao Conde Ramos                               11/01/2000           F";

    char regquinze[4];
    char matrquinze[11];
    char nomequinze[51];
    char dtnquinze[10];
    
    sscanf (linhaquinze,"%s%s", regquinze, matrquinze);
    strncpy(nomequinze, linhaquinze + 17, 50);
    nomequinze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomequinze[c] == ' ')
            nomequinze[c] = 0;
        else
            break;
    }
    
    strncpy(dtnquinze, linhaquinze + 67, 10);
    dtnquinze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrquinze, nomequinze, dtnquinze);
    
    //************************************************************************************************************************************************
    
    char linhadeze[100] = "002  172012217   Mirian Vinhas Souto                               06/02/1999           F";
    char regdeze[4];
    char matrdeze[11];
    char nomedeze[51];
    char dtndeze[10];
    
    sscanf (linhadeze,"%s%s", regdeze, matrdeze);
    strncpy(nomedeze, linhadeze + 17, 50);
    nomedeze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedeze[c] == ' ')
            nomedeze[c] = 0;
        else
            break;
    }
    
    strncpy(dtndeze, linhadeze + 67, 10);
    dtndeze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdeze, nomedeze, dtndeze);
    
    // ************************************************************************************************************************************************
    
     char linhadezessete[100] = "002  182012184   Axel Moita Camacho                                10/10/1991           F";
    char regdezessete[4];
    char matrdezessete[11];
    char nomedezessete[51];
    char dtndezessete[10];
    
    sscanf (linhadezessete,"%s%s", regdezessete, matrdezessete);
    strncpy(nomedezessete, linhadezessete + 17, 50);
    nomedezessete[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedezessete[c] == ' ')
            nomedezessete[c] = 0;
        else
            break;
    }
    
    strncpy(dtndezessete, linhadezessete + 67, 10);
    dtndeze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdezessete, nomedezessete, dtndezessete);
    
    // ********************************************************************************************************************************************
    
     char linhadezoito[100] = "002  192020139   Lyana Pedro Noronha                               22/11/2000           F";
    char regdezoito[4];
    char matrdezoito[11];
    char nomedezoito[51];
    char dtndezoito[10];
    
    sscanf (linhadezoito,"%s%s", regdezoito, matrdezoito);
    strncpy(nomedezoito, linhadezoito + 17, 50);
    nomedezoito[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedezoito[c] == ' ')
            nomedezoito[c] = 0;
        else
            break;
    }
    
    strncpy(dtndezoito, linhadezoito + 67, 10);
    dtndezoito[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdezoito, nomedezoito, dtndezoito);
    
    // ********************************************************************************************************************************
    
     char linhadezenove[100] = "002  202012047   Ronaldo Braga Netto                               22/07/2000           F";
    char regdezenove[4];
    char matrdezenove[11];
    char nomedezenove[51];
    char dtndezenove[10];
    
    sscanf (linhadezenove,"%s%s", regdezenove, matrdezenove);
    strncpy(nomedezenove, linhadezenove + 17, 50);
    nomedezenove[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedezenove[c] == ' ')
            nomedezenove[c] = 0;
        else
            break;
    }
    
    strncpy(dtndezenove, linhadezenove + 67, 10);
    dtndezenove[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdezenove, nomedezenove, dtndezenove);
    
    fclose(arquivo);
    
}

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

int main() {
	
	FILE *arquivo;

arquivo = fopen ("ARQ01.txt", "r");

if(arquivo == NULL){
    printf("não foi possível abrir o arquivo\n");
    getchar();
    exit(0);
}
	
    char linha[100] = "002   12012435   Nilo Pontes Sousa                                 17/02/2000           F";
    char reg[4];
    char matr[11];
    char nome[51];
    char dtn[11];
    
    sscanf (linha,"%s%s", reg, matr);
    strncpy(nome, linha + 17, 50);
    nome[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nome[c] == ' ')
            nome[c] = 0;
        else
            break;
    }
    
    strncpy(dtn, linha + 67, 10);
    dtn[10] = 0;
    printf("002,%s,%s,%s,F\n", matr, nome, dtn);
    
    //****************************************************************************************************************
    
    char linhaum[100] = "002   21910420   Miguel Veiga Carrilho                             26/11/1997           F";

    char regum[4];
    char matrum[11];
    char nomeum[51];
    char dtnum[11];
    
    sscanf (linhaum,"%s%s", regum, matrum);
    strncpy(nomeum, linhaum + 17, 50);
    nomeum[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeum[c] == ' ')
            nomeum[c] = 0;
        else
            break;
    }
    
    strncpy(dtnum, linhaum + 67, 10);
    dtnum[10] = 0;
    printf("002,%s,%s,%s,F\n", matrum, nomeum, dtnum);
    
    //********************************************************************************************************************
    
     char linhadois[101] = "002   31813713   Teresinha Fragoso Fontinha                        14/01/1997           F";

    char regdois[4];
    char matrdois[11];
    char nomedois[51];
    char dtndois[11];
    
    sscanf (linhadois,"%s%s", regdois, matrdois);
    strncpy(nomedois, linhadois + 17, 50);
    nomedois[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedois[c] == ' ')
            nomedois[c] = 0;
        else
            break;
    }
    
    strncpy(dtndois, linhadois + 67, 10);
    dtndois[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdois, nomedois, dtndois);
    
    //**********************************************************************************************************************
    
     char linhatres[100] = "002   41615446   Jordan Belchiorinho Lagos                         02/09/1996           F";

    char regtres[4];
    char matrtres[11];
    char nometres[51];
    char dtntres[11];
    
    sscanf (linha,"%s%s", regtres, matrtres);
    strncpy(nometres, linhatres + 17, 50);
    nomeum[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nometres[c] == ' ')
            nometres[c] = 0;
        else
            break;
    }
    
    strncpy(dtntres, linhatres + 67, 10);
    dtntres[10] = 0;
    printf("002,%s,%s,%s,F\n", matrtres, nometres, dtntres);
    
    //************************************************************************************************************************
    
    char linhaquatro[100] = "002   52011977   Iara Quinteiro Melancia                           14/02/1996           F";

    char regquatro[4];
    char matrquatro[11];
    char nomequatro[51];
    char dtnquatro[11];
    
    sscanf (linhaquatro,"%s%s", regquatro, matrquatro);
    strncpy(nomequatro, linhaquatro + 17, 50);
    nomequatro[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomequatro[c] == ' ')
            nomequatro[c] = 0;
        else
            break;
    }
    
    strncpy(dtnquatro, linhaquatro + 67, 10);
    dtnquatro[10] = 0;
    printf("002,%s,%s,%s,F\n", matrquatro, nomequatro, dtnquatro);
    
    //*************************************************************************************************************************
    
    char linhacinco[100] = "002   62010992   Neusa Gomide Canario                              02/04/2002           F";

    char regcinco[4];
    char matrcinco[11];
    char nomecinco[51];
    char dtncinco[11];
    
    sscanf (linhacinco,"%s%s", regcinco, matrcinco);
    strncpy(nomecinco, linhacinco + 17, 50);
    nomecinco[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomecinco[c] == ' ')
            nomecinco[c] = 0;
        else
            break;
    }
    
    strncpy(dtncinco, linhacinco + 67, 10);
    dtncinco[10] = 0;
    printf("002,%s,%s,%s,F\n", matrcinco, nomecinco, dtncinco);
    
    //***************************************************************************************************************************
    
    char linhaseis[100] = "002   71711935   Abdul Modesto Pureza                              27/01/1992           F";

    char regseis[4];
    char matrseis[11];
    char nomeseis[51];
    char dtnseis[11];
    
    sscanf (linhaseis,"%s%s", regseis, matrseis);
    strncpy(nomeseis, linhaseis + 17, 50);
    nomeseis[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeseis[c] == ' ')
            nomeseis[c] = 0;
        else
            break;
    }
    
    strncpy(dtnseis, linhaseis + 67, 10);
    dtnseis[10] = 0;
    printf("002,%s,%s,%s,F\n", matrseis, nomeseis, dtnseis);
    
    //****************************************************************************************************************************
    
    char linhasete[100] = "002   82020657   Ludmila Frade Capistrano                          09/05/1995           F";

    char regsete[4];
    char matrsete[11];
    char nomesete[51];
    char dtnsete[10];
    
    sscanf (linhasete,"%s%s", regsete, matrsete);
    strncpy(nomesete, linhasete + 17, 50);
    nomesete[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomesete[c] == ' ')
            nomesete[c] = 0;
        else
            break;
    }
    
    strncpy(dtnsete, linhasete + 67, 10);
    dtnsete[10] = 0;
    printf("002,%s,%s,%s,F\n", matrsete, nomesete, dtnsete);
    
    //******************************************************************************************************************************
    
    char linhaoito[100] = "002   91704871   Kyami Furtado Mafra                               19/05/1978           F";

    char regoito[4];
    char matroito[11];
    char nomeoito[51];
    char dtnoito[10];
    
    sscanf (linhaoito,"%s%s", regoito, matroito);
    strncpy(nomeoito, linhaoito + 17, 50);
    nomeoito[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeoito[c] == ' ')
            nomeoito[c] = 0;
        else
            break;
    }
    
    strncpy(dtnoito, linhaoito + 67, 10);
    dtnoito[10] = 0;
    printf("002,%s,%s,%s,F\n", matroito, nomeoito, dtnoito);
    
    // *****************************************************************************************************************************
    
      char linhanove[100] = "002  101615740   Carmen Guedelha Sacadura                          16/03/1997           F";

    char regnove[4];
    char matrnove[11];
    char nomenove[51];
    char dtnnove[10];
    
    sscanf (linhanove,"%s%s", regnove, matrnove);
    strncpy(nomenove, linhanove + 17, 50);
    nomenove[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomenove[c] == ' ')
            nomenove[c] = 0;
        else
            break;
    }
    
    strncpy(dtnnove, linhanove + 67, 10);
    dtnnove[10] = 0;
    printf("002,%s,%s,%s,F\n", matrnove, nomenove, dtnnove);
    
    //***********************************************************************************************************************************
    
         char linhadez[100] = "002  111911901   Jonas Rosa Regodeiro                              18/05/1992           F";

    char regdez[4];
    char matrdez[11];
    char nomedez[51];
    char dtndez[10];
    
    sscanf (linhadez,"%s%s", regdez, matrdez);
    strncpy(nomedez, linhadez + 17, 50);
    nomedez[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedez[c] == ' ')
            nomedez[c] = 0;
        else
            break;
    }
    
    strncpy(dtndez, linhadez + 67, 10);
    dtndez[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdez, nomedez, dtndez);
    
    // *************************************************************************************************************************************
    
    char linhaonze[100] = "002  122011094   Lucia Redondo Lisboa                              06/09/1997           F";

    char regonze[4];
    char matronze[11];
    char nomeonze[51];
    char dtnonze[10];
    
    sscanf (linhaonze,"%s%s", regonze, matronze);
    strncpy(nomeonze, linhaonze + 17, 50);
    nomeonze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomeonze[c] == ' ')
            nomeonze[c] = 0;
        else
            break;
    }
    
    strncpy(dtnonze, linhaonze + 67, 10);
    dtnonze[10] = 0;
    printf("002,%s,%s,%s,F\n", matronze, nomeonze, dtnonze);
    
    // ***************************************************************************************************************************************
        char linhajose[100] = "002  131714919   Josefina Loio Banha                               09/12/1996           F";

    char regjose[4];
    char matrjose[11];
    char nomejose[51];
    char dtnjose[10];
    
    sscanf (linhajose,"%s%s", regjose, matrjose);
    strncpy(nomejose, linhajose + 17, 50);
    nomejose[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomejose[c] == ' ')
            nomejose[c] = 0;
        else
            break;
    }
    
    strncpy(dtnjose, linhajose + 67, 10);
    dtnjose[10] = 0;
    printf("002,%s,%s,%s,F\n", matrjose, nomejose, dtnjose);
    
    //****************************************************************************************************************************************
    
       char linhatreze[100] = "002  141512419   Paloma Tabosa Quintal                             29/09/1998           F";

    char regtreze[4];
    char matrtreze[11];
    char nometreze[51];
    char dtntreze[10];
    
    sscanf (linhatreze,"%s%s", regtreze, matrtreze);
    strncpy(nometreze, linhatreze + 17, 50);
    nometreze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nometreze[c] == ' ')
            nometreze[c] = 0;
        else
            break;
    }
    
    strncpy(dtntreze, linhatreze + 67, 10);
    dtntreze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrtreze, nometreze, dtntreze);
    
    // *******************************************************************************************************************************************
    
    char linhaquator[100] = "002  152112795   Flavia Ornelas Ribeiro                            07/03/2001           F";

    char regquator[4];
    char matrquator[11];
    char nomequator[51];
    char dtnquator[10];
    
    sscanf (linhaquator,"%s%s", regquator, matrquator);
    strncpy(nomequator, linhaquator + 17, 50);
    nomequator[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomequator[c] == ' ')
            nomequator[c] = 0;
        else
            break;
    }
    
    strncpy(dtnquator, linhaquator + 67, 10);
    dtnquator[10] = 0;
    printf("002,%s,%s,%s,F\n", matrquator, nomequator, dtnquator);
    
    // ********************************************************************************************************************************************
    
        char linhaquinze[100] = "002  162011978   Salomao Conde Ramos                               11/01/2000           F";

    char regquinze[4];
    char matrquinze[11];
    char nomequinze[51];
    char dtnquinze[10];
    
    sscanf (linhaquinze,"%s%s", regquinze, matrquinze);
    strncpy(nomequinze, linhaquinze + 17, 50);
    nomequinze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomequinze[c] == ' ')
            nomequinze[c] = 0;
        else
            break;
    }
    
    strncpy(dtnquinze, linhaquinze + 67, 10);
    dtnquinze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrquinze, nomequinze, dtnquinze);
    
    //************************************************************************************************************************************************
    
    char linhadeze[100] = "002  172012217   Mirian Vinhas Souto                               06/02/1999           F";
    char regdeze[4];
    char matrdeze[11];
    char nomedeze[51];
    char dtndeze[10];
    
    sscanf (linhadeze,"%s%s", regdeze, matrdeze);
    strncpy(nomedeze, linhadeze + 17, 50);
    nomedeze[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedeze[c] == ' ')
            nomedeze[c] = 0;
        else
            break;
    }
    
    strncpy(dtndeze, linhadeze + 67, 10);
    dtndeze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdeze, nomedeze, dtndeze);
    
    // ************************************************************************************************************************************************
    
     char linhadezessete[100] = "002  182012184   Axel Moita Camacho                                10/10/1991           F";
    char regdezessete[4];
    char matrdezessete[11];
    char nomedezessete[51];
    char dtndezessete[10];
    
    sscanf (linhadezessete,"%s%s", regdezessete, matrdezessete);
    strncpy(nomedezessete, linhadezessete + 17, 50);
    nomedezessete[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedezessete[c] == ' ')
            nomedezessete[c] = 0;
        else
            break;
    }
    
    strncpy(dtndezessete, linhadezessete + 67, 10);
    dtndeze[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdezessete, nomedezessete, dtndezessete);
    
    // ********************************************************************************************************************************************
    
     char linhadezoito[100] = "002  192020139   Lyana Pedro Noronha                               22/11/2000           F";
    char regdezoito[4];
    char matrdezoito[11];
    char nomedezoito[51];
    char dtndezoito[10];
    
    sscanf (linhadezoito,"%s%s", regdezoito, matrdezoito);
    strncpy(nomedezoito, linhadezoito + 17, 50);
    nomedezoito[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedezoito[c] == ' ')
            nomedezoito[c] = 0;
        else
            break;
    }
    
    strncpy(dtndezoito, linhadezoito + 67, 10);
    dtndezoito[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdezoito, nomedezoito, dtndezoito);
    
    // ********************************************************************************************************************************
    
     char linhadezenove[100] = "002  202012047   Ronaldo Braga Netto                               22/07/2000           F";
    char regdezenove[4];
    char matrdezenove[11];
    char nomedezenove[51];
    char dtndezenove[10];
    
    sscanf (linhadezenove,"%s%s", regdezenove, matrdezenove);
    strncpy(nomedezenove, linhadezenove + 17, 50);
    nomedezenove[50] = 0;
    for (int c = 49; c >= 0; c--) {
        if (nomedezenove[c] == ' ')
            nomedezenove[c] = 0;
        else
            break;
    }
    
    strncpy(dtndezenove, linhadezenove + 67, 10);
    dtndezenove[10] = 0;
    printf("002,%s,%s,%s,F\n", matrdezenove, nomedezenove, dtndezenove);
    
    fclose(arquivo);
    
}

 

Ainda não fiz as modificações, mas acredito que seja nessa linha de raciocínio, caso não seja, peço que me auxiliem mais uma vez 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!