Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal, é o seguinte estou fazendo um código que lê uma planilha no formato csv em c, mas por enquanto só aprendi como faz pra ler as linhas inteiras, com as colunas separadas por ";".

 

Por exemplo, a planilha estando assim:

 

Titular  |  Dependente  |  Valor

Carlos  |       Maria       |  200

Paulo   |      Silvana     |  250

Maria   |      Claudio     |  225

 

 

O código que eu fiz, busca uma string, e ele imprime todas linhas que tenham essa string, mas eu queria me basear apenas na primeira coluna, por exemplo se eu digitar "Maria", vai imprimir as linhas 2 e 4, eu queria que imprimisse apenas a linha 4, e o contrário também, imprimir apenas a linha 2 (se a lógica não for a mesma).

 

Outra dúvida é, como faz para imprimir apenas determinada(s) coluna(s), se eu quiser imprimir apenas a coluna b, ou apenas as colunas b e c, assim por diante

 

A última dúvida é como eu converteria os dados da terceira coluna em inteiros, pois eu preciso somá-los e também dizer qual o maior e o menor valor.

 

Por enquanto esse é o código:

 

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

int main(){


    FILE *fl = fopen("nome_do_arquivo.csv", "rt");
    char search[100];
    char line[1000];
    int done = 0;
    int i = 0;


    fgets(search, 100, stdin);
    search[strlen(search) -1] = 0;


    do{


            fgets(line, 1000, fl);

            i++;

            if(strstr((line), search) != NULL){

                    printf("\n");
                    printf("Titular: %s",strtok(line, ";"));
                    printf("\n");
                    printf("Dependente: %s",strtok(NULL, ";"));
                    printf("\n");
                    printf("Valor: %s",strtok(NULL, ";"));
                    printf("\n");
                    printf("\n");


                    done = 1;

                    }

                    } //chaves que fecha o do


                    while(!feof(fl));

                    if(done == 0)

                        printf("Dados nao encontrados");
                        printf("\n");

                    return 0;

                    }

 

 

Qualquer ajuda será bem-vinda,

 

desde já agradeço.

Postado

@HenriSp Olá! Atualmente o fluxo de pessoas no fórum de C\C++ subiu bastantes, comecei a perceber também que os membros muita vezes tem exercícios aparentemente que estão acima de suas capacidades, isso no geral. É ruim para um dialogo ou para  discussão (discussão é o sentido do fórum) se apenas  um dos lados sabe do que se está se falando.

 

3 horas atrás, HenriSp disse:

Outra dúvida é, como faz para imprimir apenas determinada(s) coluna(s), se eu quiser imprimir apenas a coluna b, ou apenas as colunas b e c, assim por diante

Então eu não conheço um método ou uma função pronta para resolver essa questão, pode até ser que exista uma biblioteca para isso, mas nunca precisei pesquisar nada desse assunto. Contudo, a linguagem fornece outros métodos digamos mais genéricos que quando bem entendidos e logicamente articulados  resolvem esse e muitos outros problemas, porém para isso tem que estudar e conhecer. Daí te pegunto, você está disposto a estudar? Porque tudo que preciso para resolver essa questão já existe em stdio.h faz aproximadamente 46 anos que está lá e levei apenas 12 horas para entender. Você tem alguma pergunta objetiva então faça, desculpe qualquer coisa.

Postado

Acabei descobrindo que a maneira de se fazer isso é criando listas encadeadas, e armazenando os elementos de cada coluna em uma lista.

 

E para imprimir a terceira coluna como inteiro só basta colocar no fscanf que ele vai receber um int

 

Já é a segunda vez que abro um tópico e não consigo tirar minha dúvida por aqui, mas tenho fé que um dia o Clube do Hardware vai me servir para alguma coisa rsrs.

 

Pode encerrar o tópico

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!