Extrair dadosde um arquivo txt criado em c

1. Extrair dadosde um arquivo txt criado em c

Dival Gomes dos Santos
cde

(usa Slackware)

Enviado em 16/05/2012 - 01:23h

Tenho o seguinte programa abaixo para criar um arquivo .txt e inserir 1 nome com respectiva idade nele. Os dados serão inseridos da seguinte forma:

Joaozinho 21


Existe alguma maneira de por exemplo extrair o nome Joaozinho em outra variável do tipo string e sua idade 21 em uma variável do tipo inteira?

Muito grato se alguém puder me ajudar. Desculpem aí por uma dúvida tão medíocre, mas por motivo de força maior e problemas familiares precisei trancar a faculdade por 2 anos. Agora tenho reestudar o c para continuar aonde parei. Praticamente esqueci quase todo o básico que havia aprendido.

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

main ()
{
FILE *pt;
int i, idade;
char arquivo[15],nome[15],extrai[20];
//NOME PARA O ARQUIVO PROPRIAMENTE DITO
printf ("Digite o nome do arquivo a ser criado: ");
gets (arquivo);
fflush (stdin);

//INCLUIR A EXTENSÃO .TXT NO FINAL DO NOME DO ARQUIVO
strcat (arquivo,".txt");

//ABRIR O ARQUIVO
pt = fopen(arquivo, "w");


//COMANDO PARA INCLUIR 1 NOME COM RESPECTIVA IDADE NO ARQUIVO

printf ("Digite um nome para incluir : ");
gets (nome);
fflush (stdin);

printf ("Digite uma a idade para incluir: ");
scanf ("%d",&idade);
fflush (stdin);

fprintf (pt,"%s\t",nome);
fprintf (pt,"%d\n",idade);

i++;
}

//FECHAR O ARQUIVO
fclose (pt);

//ABRIR O ARQUIVO NOVAMENTE SOMENTE PARA LEITURA
pt = fopen(arquivo,"r");

//COMANDO PARA GRAVAR O CONTEÚDO DO ARQUIVO CRIADO EM UMA NOVA STRING
//ESTOU APANHANDO PARA SEPARAR O NOME DA IDADE
while (!feof(pt))
fgets(extrai,19,pt);

fclose (pt);

printf ("\n%s\n\n",extrai);
system ("pause");

return (0);


fclose (pt);
printf ("\n\n");

system ("pause");

return (0);
}


  


2. use a função getc()

Max Prass
jeisonmp

(usa Ubuntu)

Enviado em 28/10/2012 - 14:24h

Subtitui o trecho


while (!feof(pt))
fgets(extrai,19,pt);


por


char c;
char palavra[20] = "";
int idade;

while ((c=getc(file)) != EOF))
{
if (c != ' ' && c != '\n')
{
sprintf(palavra, "%s%c", palavra, c);
}
else
{
if (atoi(palavra) != 0)
{
//eh um numero;
}
else
{
//eh um nome;
}
}
}


Acho que verifica melhor se é um numero ou uma string usando a função isalpha, isalnum, algo assim, não me recordo agora, mas é facilmente verificável no dr. google, ok? Qualquer dúvida me add no msn.

Abraços!
jeisonmp
msn: jeisonmp@msn.com






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts