Pegando valores de um arquivo com C

julho 31, 2008

Abaixo eu criei um código simples de como ler os valores definidos em alguns macros. Isso é util se seu programa precisa pegar dados em um arquivo de configuração.

exemplo.txt

variavel_um=ola

ler_valores.c

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

#define _GNU_SOURCE

int main (void) {
FILE *fp=NULL;
char *variavel=NULL;
char *valor=NULL;
char *tmp_ptr=NULL;

size_t len=100;

char *line = malloc(len);

fp=fopen(“exemplo.txt”,”r”);

if(fp==NULL){
printf(“Não consegui ler o arquivo\n”);
exit(EXIT_FAILURE);
}

while(getline(&line,&len,fp)>0) {
tmp_ptr=strtok(line,”=”);
variavel=(char *)strdup(tmp_ptr);

if(!strcmp(variavel,”variavel_um”)) {
tmp_ptr=strtok(NULL,”\n”);
valor=(char *)strdup(tmp_ptr);

printf(“Valor: %s\n”,valor);
}

}

if(line)
free(line);

}

Para compilar : gcc -o ler_valores ler_valores.c

Anúncios

2 Respostas to “Pegando valores de um arquivo com C”


  1. Amigo,

    Seu codigo tem dois memory leaks muito criticos, pois o comando strdup ele retorna um ponteiro alocado na qual precisa ser desalocado com free()

    repare que não precisa do strdup em tmp_ptr, podendo ser imprimido diretamente o valor atribuido a “variavel”.

    Resumindo! o uso do strdup() está desnecessário!

    abraços!
    []s

  2. andrem Says:

    Opa Jorge, obrigado pela correção!


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: