Ir ao conteúdo
  • Cadastre-se
thiagoribeiro42

C Ler dados de arquivo em C e passar para variáveis

Recommended Posts

olá! preciso de ajuda no seguinte: farei uma árvore-b para apresentar um trabalho na faculdade, que consiste em ler os dados de um arquivo de texto e passá-los para a b tree. farei da seguinte maneira: criei um struct com os tipos de dados (lote; placa; uf; motor; renavam; chassi; ano; marca/ modelo; proprietário; financeira; valor) e vou armazenar o lote na b-tree e, então, quando pesquisarem pelo lote, exibirei os dados do struct relacionados ao lote. a questão agora é como ler o arquivo de texto, pois não estou conseguindo ler e armazenar as informações em suas respectivas variáveis. segue como o arquivo está.


    lote; placa; uf; motor; renavam; chassi; ano; marca/ modelo;
    proprietário; financeira; valor
    0001; ljg6509; df; ba042893; 00300896778; 7sk182224; 1974;
    vw/brasilia; goncalo jose de franca; marcal de assis brasil; 3000.00
    0002; hbr7108; df; 9bd17206g83400203; 00954371330; 178f1011*8002263*;
    2008; fiat/siena fire flex; antonio augusto alves dos santos; aymore
    financiamentos;3450.00
    0003; jjb0059; df; 9bd17201b53124230; 00838026320; 178e9011*6128825*;
    2004; fiat/siena elx flex; joao alberto santos sobrinho; banco
    bradesco financiamentos s.a. ; 3450.00
    0004; jgg0484; df; 93hgd17404z120657; 00824912748; l13a4-h113508;
    2004; honda/fit lx; fernando evaristo dos santos; banco finasa sa;
    3030.00
    0005; ljq8142; rj; lb8abk60592; 00304920886; suprimido; 1983; ford/del
    rey; jose siqueira; aymore leasing; 3150.00
    0006; jdq0675; df; 9bg5tc11ufc158987; 00293715343; 5jh20pa48199; 1985;
    gm/chevette; rodrigo de castro paula; aymore financiamentos; 3530.00
    0007; jgq8447; df; 9bfzf10b678103244; 00889829691; caja78103244; 2006;
    ford/fiesta; andrea cristina chaves machado; banco itaucard sa;
    3100.00
    0008; jds8539; go; ba170068; 00001269992; suprimido; 1975;
    vw/brasilia; samuel soares sarafim; bv financeira sa cfi; 2850.00
    0009; jft5423; df; 9bgsd19401c189366; 00751983616; cj0039685; 2000;
    gm/corsa super; eloi nunes de sousa; panamericano; 3550.00
    0010; jjd1340; df; 9bd178237t0079169; 00663876648; 4777947; 1996;
    fiat/palio el; leandro dantas lima; banco panamericano sa; 3450.00
    0011; kdr1120; df; 9bglk19brrb315479; 00627287034; c20ne31014740l;
    1994; gm/vectra gls; mauricio de lima silva; hsbc bank brasil s/a bm;
    2480.00
    0012; kaw6325; go; lb4dpa78820; 00112493793; suprimido; 1975;
    ford/corcel; levino machado da costa; banco panamericano sa; 1880.00
    0013; jeq3930; df; bs012252; 00000121967; bh136193; 1970; vw/fusca
    1500; silvana aparecida da silva; unibanco - uniao de bancos
    brasileiros s.a.; 1850.00
    0014; hys6690; ce; 9bgrd48x04g134684; 00818350288; 7v0009127; 2003;
    gm/celta 5 portas; simone quintino mendes da vitoria; banco gmac;
    3500.00
    0015; jga2435; df; 9bgsc68z01b167794; 00759527709; suprimido; 2001;
    gm/corsa wind; cleusa do rosario a siqueira; aymore financiamentos;
    3100.00
    0301; jhh8778; df; 8bcldrfj48g521910; 00939636573; suprimido; 2007;
    i/citroen c4 pallas20glm; cristiane monteiro lima paiva; caixa
    econômica federal; 2000.00
    0302; jkj5612; df; 9bwaa05w5dp091431; 00500162247; ccp396671; 2012;
    vw/gol 1.0 ecomotion giv; antonio alves de oliveira; banco
    panamericano sa; 2500.00
    0303; jhy8370; df; 8agcn48x0br142232; 00253254264; u55060355; 2010;
    i/chevrolet agile ltz; n.a pizzaria restaurante e servicos de b; bb
    admnistradora de consc sa; 3500.00
    0304; lnn3808; df; 93uma48l714010797; 00766868516; akl734422; 2001;
    audi/a3 1.6; alex antonio da silva; banco bradesco sa; 2000.00
    0305; lom1229; df; 9bmmf33e43a047599; 00797678336; 16696030636876;
    2003; m.benz/a 160; jose batista vieira; banco bradesco sa; 2000.00
    0306; jis7553; df; 8ap17206lb2201591; 00322387884; 310a10110162774;
    2011; i/fiat siena fire flex; julio cesar garcia filho; bv financeira
    sa cfi; 2500.00
    0307; jic8524; df; 9bd135316a2122152; 00146989040; x8*0463078*; 2009;
    fiat/idea adventure flex; francivaldo soares jacobina; banco bradesco
    financiamentos s.a.; 2500.00
    0308; jic0333; df; 9bwaa05u5ap099734; 00193353180; ccn417375; 2010;
    vw/gol 1.0; marisa viana pereira; banco itau cfi; 2000.00
    0309; jjh5857; df; lj12fkr10c4271258; 00451856970; hfc4eb13db3468084;
    2011; i/jac j3 turin; abraao alves costa; banco panamericano sa;
    2000.00
    0310; jgn4857; df; 9bd15822764731812; 00860177602; 146e1011*6513692*;
    2005; fiat/uno mille fire flex; jorge luiz schumcher; banco
    panamericano sa; 2000.00
    0311; hab5748; df; 9bd17103232203526; 00785472452; 5504789; 2002;
    fiat/palio fire; edite rosadias de souza; banco panamericano sa;
    2000.00
    0312; jiv8133; df; 93ylsr6rhbj754270; 00325257922; d4dh760q151276;
    2011; renault/logan aut 1016v; elzi pereira da silva; cia cfi rci
    brasil; 2500.00
    0313; jib6665; df; 9bfzk03p19b023479; 00966756134; qfra9023479; 2008;
    153308-ford/ka 1.6flex; carleone silva costa; banco panamericano sa;
    2500.00
    0314; cre3624; df; wvwgc63b9we454295; 00715180053; ack086808; 1998;
    i/vw passat v6; puma locadora e turismo ltda me; banco panamericano
    sa; 2000.00
    0315; jjh2574; df; 9bwaa05w9bp046926; 00269279202; ccp225918; 2010;
    vw/gol 1.0 giv; eliane nascimento da silva.; banco itaucard sa;
    2000.00
    0316; jha6732; df; 9bd17164la5376665; 00127823654; 310a1011*8648527*;
    2009; fiat/palio fire economy; jose goncalves vieira; banco
    panamericano sa; 2000.00
    0317; jhf5499; df; 9bd15822a96191255; 00986553212; 146e1011*8501060*;
    2008; fiat/uno mille economy; francisco jose enio da silva; banco fiat
    s/a; 2000.00
    0318; jic5460; df; 9bd110585a1527407; 00253104670; 310a3011*8723769*;
    2010; fiat/linea hlx 1.9 dual; anderson jose borges; bv financeira sa
    cfi; 2500.00
    0319; jkk6367; df; 9bfzf55a0d8486830; 00538849410; sm9ad8486830; 2013;
    ford/fiesta flex; erinaldo ribeiro de souza; banco itaucard sa;
    2000.00
    0320; dvd7522; df; 9bwkb05z174037965; 00898975522; bpa126696; 2006;
    vw/crossfox; bras candido borba; banco panamericano sa; 2000.00
    0321; dkf6896; df; 9bwka05z754019406; 00834445921; bje025796; 2004;
    vw/fox 1.0; lucilene silva alves teixeira; real leasing sa
    arrendamento mercantil; 2000.00
    0322; jjc7064; df; lj12ekp12e4601216; 00534448585; hfc4eb13dd3415663;
    2013; i/jac j2 1.4; cecilio lopes sales; aymore financiamentos;
    2500.00
    0323; hpw0298; df; 94dcmgd225j565003; 00847531090; 40704191102; 2004;
    nissan/frontier 4x2 se; edimaura paes de sousa; banco itaucard sa;
    3000.00
    0325; jjj3627; df; lscbb13d8cg800943; 00457564725; jl466q4b64f019260;
    2011; i/changan chana sc13d; francinaldo mota; brb credito
    financiamento e investimento s a; 1500.00
    0326; jhr0456; df; 8ad3drfj47g049541; 00926565281; 10lh4p1516969;
    2006; i/peugeot 307sd 20s m fl; elmo elias santos nascimento; aymore
    financiamentos; 2500.00
    0327; jhl7740; df; 9bwaa05u5at154996; 00178301620; ccn377037; 2009;
    vw/gol 1.0; carlos alberto da cunha simoes; aymore financiamentos;
    2000.00
    0328; jhf6749; df; 9bd17206g93476865; 00986960845; 178f1011*8498738*;
    2008; fiat/siena fire flex; gilson farias de andrade; bb leasing sa
    arrend. mercantil; 2000.00
    0329; jhs9868; df; 9bwab05z294059634; 00982925719; ccr036280; 2008;
    vw/crossfox; viviane fernandes da silva; banco bmc s/a - finasa;
    2500.00
    0330; jgs6557; df; 93hfa16307z108363; 00890983810; r18a1-7z108367;
    2006; honda/civic lxs; euranio soares santos; itau unibanco s.a.;
    3000.00
    0331; jio0289; df; lvvdb12b0bd167850; 00333102118; sqr473fafbc01664;
    2011; i/chery face 1.3; wm comercio e industria de vidros ltda; aymore
    financiamentos; 2000.00
    0332; jkj5719; df; 9bd372110d4034781; 00539312398; 310a10111459900;
    2013; fiat/siena el 1.0 flex; juracy silva de almeida; banco
    panamericano sa; 2500.00
    0333; jgu6486; df; 9bd11985461031944; 00871362902; 5m*0173519*; 2005;
    fiat/doblo adventure; paulo augusto de sao jose ; banco bradesco
    financiamentos s.a.; 2000.00
    0334; jjk0638; df; 4s4wxflu5bs029612; 00459571680; u394686; 2010;
    i/subaru tribeca; espobras construcao e incorporacao ltda; bradesco
    leasing s.a. - arrendamento mercantil; 3500.00
    0335; jkj8367; df; 9bd15822ad6830581; 00538014156; 146e10111480325;
    2013; fiat/uno mille economy; ricardo dos santos; banco panamericano
    sa; 2000.00
    0336; jgb3807; df; 9bd17140212078216; 00762552905; 5127709; 2001;
    fiat/palio ex; helio da silva coutinho; banco itaucard sa; 2000.00
    0337; jdv8492; df; 9bfzf20b558295288; 00846940000; caja58295288; 2005;
    ford/fiesta sedan; joaquim juares da silva; banco pecunia s/a; 2000.00
    0338; jhn0991; df; 8bcldrfjwag528812; 00199523363; 10twaa0037624;
    2009; i/citroen c4 pallas20eaf; paulo henrique carvalho de melo me;
    caixa econômica federal; 3000.00
    0339; jgz5695; df; 9bwca05w66t164423; 00885894626; bnw097198; 2006;
    vw/gol 1.0; patricia de jesus oliveira; banco panamericano sa; 1500.00
    0340; jhn2980; df; 9bwdb09n5ap014145; 00172998115; bpa214436; 2009;
    vw/polo sedan 1.6; valdeir alves nogueira; banco itaucard sa; 2000.00
    0341; jhm0175; df; 9bd17206g73324431; 00919759297; 178f1011*7552450*;
    2007; fiat/siena fire flex; elaine maria ferreira lira; banco
    panamericano sa; 2000.00
    0342; jik9533; df; 9bwaa05u9bt161869; 00259555479; ccn661628; 2010;
    vw/gol 1.0; maria dos reis damasceno da cruz; bv financeira sa cfi;
    2000.00
    0343; jis7029; df; 9bd15802ac6641487; 00363467912; 146e10110537174;
    2011; fiat/uno mille economy; cleriston apolinario de alcantara; banco
    fiat s/a; 2000.00
    0344; jhz8910; df; 9bgrm69x0bg201219; 00256126208; nac034829; 2010;
    gm/prisma maxx; temistocles ferreira menezes; bv leasing arrendamento
    mercantil sa; 2000.00
    0345; hcu7682; df; 8ad3crfn16g012508; 00889092001; 10lh2x1388201;
    2005; i/peugeot 307 20 feline; adriana domingos de oliveira; banco
    panamericano sa; 2000.00
    0347; jhb2412; df; 9bgsa19109b248600; 00128377208; s80006976; 2009;
    gm/classic life; sebastiao jorge dos santos; bfb leasing s.a.
    arrendamento mercantil; 2500.00
    0349; jhl9804; df; 9bwgf07x18p023201; 00959668322; btj052200; 2008;
    vw/kombi; vagner barbosa damasceno; sorocred - credito, financ. e
    investimento s/a; 2500.00
    0350; jif4985; df; 9bd17164g85232345; 00967203520; 178f1011*8169351*;
    2008; fiat/palio fire flex; marciel mendes dos santos; caixa econômica
    federal; 2500.00
    0351; jgu7099; df; 9bwca05w46t197050; 00894987666; bnw124850; 2006;
    vw/gol 1.0 copa; leonardo ferraz de queiroz; banco itaucard sa;
    2000.00
    0352; jib9378; df; 9bfzf54a798415312; 00164380370; sm9a98415312; 2009;
    ford/fiesta sedan flex; flora mecupre coelho da mota cabral; banco
    panamericano sa; 2000.00
    0353; jhb6982; df; 9bd19250r93087919; 00126902100; q7*0414787*; 2009;
    fiat/stilo sporting flex; wesley holanda da silva; aymore
    financiamentos; 2000.00
    0354; jhs1582; df; 9bwaa05u3at230876; 00200075160; ccn462504; 2010;
    vw/gol 1.0; fabiano silva dos santos; banco bradesco financiamentos
    s.a.; 2500.00
    0356; jke9912; df; 9bwab05u0dt078699; 00469748125; ccrn38259; 2012;
    vw/gol 1.6; ponto com solucoes em tec da inf ltda me; banco santander
    brasil s/a; 2500.00
    0357; jem7016; df; 9bwka05z544018334; 00828846650; bje012286; 2004;
    vw/fox 1.0; joseanne maria da silva luzia; hsbc bank brasil s/a bm;
    2000.00
    0358; jfu9161; df; 9362an6a96b016806; 00873961633; 10dbtx0000451;
    2005; peugeot/206 16 holid fx; cley ferreira de macedo; bb leasing sa
    arrend. mercantil; 2000.00
    0359; jho8032; df; 9bfzf54p4a8034381; 00198371420; qf9aa8034381; 2010;
    ford/fiesta sedan1.6flex; marta aparecida rodrigues ribeiro; banco
    itau bba sa; 2500.00
    0360; jik3300; df; 8ap372111c6010504; 00341484245; 310a20110222639;
    2011; i/fiat siena el flex; sergio barbosa dantas; bv financeira sa
    cfi; 2000.00
    0362; jhc2944; df; 93hgd17607z203068; 00919454690; l13a4-7z203064;
    2007; honda/fit lxl; luis felipe da costa silva; banco panamericano
    sa; 3500.00
    0363; han9315; df; 9bd19240t53030666; 00838707220; 7z*0092586*; 2004;
    fiat/stilo; marcelo barramacher tocantins; banco panamericano sa;
    2000.00
    0364; jhi3665; df; 9bd17106g72863905; 00900855312; 178f1011*7280491*;
    2006; fiat/palio fire flex; ildemar da costa; banco panamericano sa;
    1500.00
    0365; jib7544; df; 9bwaa05z494144655; 00148089003; ccn151413; 2009;
    vw/fox 1.0; adeilde de souza chaves; banco bradesco financiamentos
    s.a.; 2500.00
    0366; jkn0585; df; 9bfzf55a4e8041900; 00569311802; sm9ae8041900; 2013;
    ford/fiesta flex; fernando dos santos; banco panamericano sa; 2000.00
    0367; kgz8961; df; 9bfzf55p9a8027280; 00197091482; qf9aa8027280; 2010;
    ford/fiesta 1.6 flex; manoel dos reis viana de sousa; banco santander
    brasil s/a; 2000.00
    0368; jhz6417; df; 9bd17164la5464946; 00154185191; 310a1011*8923435*;
    2009; fiat/palio fire economy; ahistir mara silva; bv financeira sa
    cfi; 2000.00
    0369; jhy3246; df; 9bwca05w38t142835; 00945920482; bnw380552; 2007;
    vw/gol 1.0; jonathan barbosa silva; bv financeira sa cfi; 3000.00
    0370; jgr0169; df; 8afdzzfha4j327237; 00813798485; 4j327237; 2003;
    i/ford focus 1.6l ha;nichollas marques de queiroz gonçalves; banco
    itaucard sa; 1500.00
    0371; jhx2575; df; 9bwca05w28p074052; 00943512786; bnw362784; 2007;
    vw/gol 1.0; gerson da silva ferreira; banco panamericano sa; 3000.00

 

  • Obrigado 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para leitura de arquivos com extensão .csv [campos separados por vírgula] use facilmente a função fscanf.

while (x < NCAMPOS) {
  fscanf( dados_file," %[^\n;]", dados_campo[x] ),
  x+= 1;
}

Todos os campos serão gravados como strings.

  • Curtir 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • O número de campos já é conhecido em todos os casos. E por acaso já postou também: 
  1. lote;
  2. placa;
  3. uf;
  4. motor;
  5. renavam;
  6. chassi;
  7. ano;
  8. marca/ modelo;
  9. proprietário;
  10. financeira;
  11. valor 
21 minutos atrás, thiagoribeiro42 disse:

A propósito, alguma ideia de como pegar o número de campos ?

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
46 minutos atrás, AnsiC disse:

Para leitura de arquivos com extensão .csv [campos separados por vírgula] use facilmente a função fscanf.


while (x < NCAMPOS) {
  fscanf( dados_file," %[^\n;]", dados_campo[x] ),
  x+= 1;
}

Todos os campos serão gravados como strings.

Nesse fscanf era pra ser uma vírgula mesmo ao final? E como declararei a variável "dados_campo[x]"? Como um char normal? Desculpe as perguntas bobas, não consegui implementar.
Tentei assim: 

char ch[100][100];
while (x < 11) {
  fscanf(fp," %[^\n;]", ch[x]),
  x+= 1;
  printf("%s",ch[x]);
}

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Não, é ponto-vírgula
    3 minutos atrás, thiagoribeiro42 disse:

    Nesse fscanf era pra ser uma vírgula mesmo ao final?

     

Testa seu funcionamento

char ch[11][100];
char x= 0;

while (x < 11) {
  
  fscanf( fp," %[^\n;]",ch[x] );
  printf( "%s; ",ch[x] );
  x+= 1;
}

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
25 minutos atrás, AnsiC disse:
  • Não, é ponto-vírgula  

Testa seu funcionamento


char ch[11][100];
char x= 0;

while (x < 11) {
  
  fscanf( fp," %[^\n;]",ch[x] );
  printf( "%s; ",ch[x] );
  x+= 1;
}

 

Aparentemente sim! Mas consegui uma adaptação através da ajuda que recebi em outro fórum e acabei chegando nisso: 
 

for(i=0; i<100; i++)
    {
        fscanf(fp, " %[^;];", ch);
        a.lote = atoi(ch);
        fscanf(fp, " %[^;];", a.placa);
        fscanf(fp, " %[^;];", a.uf);
        fscanf(fp, " %[^;];", a.motor);
        fscanf(fp, " %[^;];", ch);
        a.renavam = atoi(ch);
        fscanf(fp, " %[^;];", a.chassi);
        fscanf(fp, " %[^;];", ch);
        a.ano = atoi(ch);
        fscanf(fp, " %[^;];", a.marca);
        fscanf(fp, " %[^;];", a.proprietario);
        fscanf(fp, " %[^;];", a.financeira);
        fscanf(fp, " %[^\n]\n", ch);
        a.valor = atof(ch);

    }

Está funcionando bem, até, no entando, ele dá uma quebra de linha ao imprimir certas strings que começam em uma linha e terminam em outra, sabe como por resolver? 
ex : "0013; JEQ3930; DF; BS012252; 00000121967; BH136193; 1970; VW/FUSCA
1500; SILVANA APARECIDA DA SILVA; UNIBANCO - UNIAO DE BANCOS
BRASILEIROS S.A.; 1850.00"

Está imprimindo assim: 

13
JEQ3930
DF
BS012252
121967
BH136193
1970
VW/FUSCA
1500
SILVANA APARECIDA DA SILVA
UNIBANCO - UNIAO DE BANCOS
BRASILEIROS S.A.
1850.00

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×