Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

 

Editado por thiagoribeiro42
  • 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

Ainda não testei, mas agradeço desde já. A propósito, alguma ideia de como pegar o número de campos ?

  • 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 ?

 

Editado por AnsiC
Correção nos índices
  • 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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






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

×