Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diegowell25

Ler os dados dos registros do arquivo.txt(não binario) para o vetor(struct).

Recommended Posts

Preciso criar uma agenda de contatos distribuída com as seguintes características:

Cada contato deverá conter: nome, número de telefone, número de celular, endereço, e-mail.

Agenda deve funcionar menu da seguinte forma: adição, remoção, alteração ou pesquisa de algum contato.

Deve salvar os contatos em um arquivo .txt formatado.

 

Estou fazendo assim:

Abro o arquivo em modo de leitura ("r" = read).

 

Verifico se existe;

Se não, eu defino o tamanho do vetor e vou para o menu para cadastrar e salvo um novo arquivo em modo de leitura "w";

 

Se existir, eu leio o arquivo.txt(formatado) e envio os dados para struct (NÃO SEI FAZER ISSO), e continuo a incrementação se for o cada de um novo cadastro, depois salvo tudo (o que ja tinha e o novo cadastro)

 

Alguém tem algum exemplo de como pode fazer isso sem ser binário?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1- você verifica se o arquivo existe depois de ler? Tá meio errado isso.

2- "w" não é modo de leitura.

3- "envio os dados para struct " -> você lê os dados do arquivo com fscanf ou fgets e usa atribuição nos campos da struct.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por gellox
      Estou lendo uma arquivo binario gigante (300 GB) e gero uma saida em ascci, gostaria de sabe como posso acelerar o esse processo! 
      Segue parte do codigo na leitura e escrita!
       
      while cont_traco <= qtd_traco:
          #print('PROCESSANDO:......... '+ str(cont_traco) + '\r'),
              #fonte.write(C2+' '),
              traco.seek(cursor + 71-1); fonte.write (str(1)+' '),  
              traco.seek(cursor + 181-1); fonte.write(str(struct.unpack('>i',traco.read(4))[0] / esc)+' '),
              traco.seek(cursor + 185-1);  fonte.write (str(struct.unpack('>i',traco.read(4))[0] / esc)+' '), 
              traco.seek(cursor + 221-1); fonte.write (str(struct.unpack('>i',traco.read(4))[0])+' '),
              traco.seek(cursor + 225-1); fonte.write (str(struct.unpack('>i',traco.read(4))[0])+'\n')
              cursor = cursor + tam_traco
              cont_traco = cont_traco + 1
          
          traco.close
          fonte.close 
    • Por Ane_
      Olá gente.
       
      Não consigo abrir o arquivo de desenvolvimento de um aplicativo,
      que foi feito pela themeforest(o template).
      Será que ele não é compatível com as IDE's que eu tô tentando abrir, já tentei no:
       
      Notepad++ Visual Studio (Com o ionic instalado) Android Studio  
      Esse é um dos erros que aparecem:
       
      "the archive not is displayed in the editor because it is either binary or uses unsupported text encoding"
       
    • Por jeredy
      Tenho um trabalho da faculdade e não consigo fazer rodar o programa corretamente.
      Quando eu coloco o cpf, na hora de imprimir sai um número aleatório. Creio que possa ser por falta de memória pois se coloco um número menor ele sai certo, porém não consigo adicionar memória em cpf.
       
      Obs: ainda não fiz a parte dos menores e da medial do grupo e a parte de imprimir em tabela pois não consegui fazer funcionar nem um básico mas se alguém souber essa parte também e puder me ajudar agradeço!!
       
      #include <stdio.h> #include <stdlib.h> main(){ struct funcionarios{ int *cpf; char nome[30]; int nascimento; float salario; }; int aux=0; //para testar se for 0 antes de armazenar o cpf struct funcionarios *func; int qtdLeitura=0, i=0, cont=0; func = ((struct funcionarios *) (malloc(sizeof(struct funcionarios) * 1))); while(1){ printf("Digite o cpf %d: ", i+1); scanf("%d", &aux); if(aux!= 0){ func.cpf = aux; fflush(stdin); } else{ break; } if(func != NULL){ qtdLeitura++; func = ((struct funcionarios *) realloc(func, sizeof(struct funcionarios) *(qtdLeitura+1))); } printf("Digite o nome %d: ", i+1); scanf("%s", func.nome); printf("Digite o nascimento %d: ",i+1); scanf("%d", &func.nascimento); printf("Digite o salario %d: ",i+1); scanf("%f", &func.salario); cont++; i++; } printf("\n\n"); for(i=0;i<cont;i++){ printf("Cpf %d:%d \n",i+1, func.cpf); printf("Nome %d: %s\n",i+1, func.nome); printf("Nascimento %d: %d\n",i+1, func.nascimento); printf("Salario %d: %.2f\n",i+1, func.salario); } }
       

    • Por juliaKrunker
      1- O comando typedef pode ser utilizado para criar novos comandos, ou simplesmente novas formas de escrever
      determinados comandos em linguagem C. Por exemplo, toda vez que você quiser criar uma variável do tipo struct
      declarado acima, terá que escrever o nome completo do tipo, isto é struct lista. Usando o comando typedef, defina um
      tipo alternativo, chamado Lista, que possa ser usado em lugar de struct lista.

      2-  Usando o tipo Lista que você criou na questão 3, declare uma variável chamada myList que possa ser utilizada para
      construir uma lista encadeada.
       
      3- (0,5) Usando o tipo Lista que você criou na questão 3, declare uma variável chamada novo que possa ser utilizada para criar
      um novo elemento para a lista declarada na questão 4.

      4- Escreva uma linha de código que aloque espaço na memória para a variável novo declarada na questão 5, de forma
      que a variável possa ser utilizada para inserir um novo elemento na lista myList declarada na questão 4.

      5 -Considerando a variável myList declarada na questão 4 e a variável novo declarada na questão 5 e alocada na questão
      6, atribua os valores 1 para o atributo id e 9.1 para o atributo valor e insira-a na lista myList.
       
      6- O trecho de código apresentado a seguir, refere-se a uma função que receberá como parâmetro um ponteiro para
      uma lista do tipo Lista e deverá calcular e retornar a média dos valores existentes na lista. Escreva o corpo da função.

    • Por Marcus_Bazzoni
      Boa tarde a todos.
       
      Estou precisando melhorar a velocidade de gravação/leitura em disco do MS SQL SERVER 2012. Atualmente estou com um SSD que faz:
       
      4K Randon Read:  33.2 MB/s
      4K Randon Write: 90.2 MB/s
      4k Randon Mix:    34.1 Mb/s
       
      A minha ideia é comprar um SSD que possua melhor performance na leitura e gravação aleatória de pequenas porções de dados (4K Randon Read, 4k Randon Write e 4K Mixed IO speed)
      Acredito que é desta forma que o SQLSERVER 2012 trabalha, ou seja, lendo e gravando pequenas porções no disco. 
       
      Então... gostaria de saber se o meu raciocínio está certo, pois não tenho certeza se assim o SQL SERVER 2012 vai responder mais rápido.
       
      Desde já agradeço toda e qualquer opinião.
       
      Marcus
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.