Ir para conteúdo
Doloblan

nao esta salvando a variavel no arquivo binario

Recommended Posts

Peguei esse codigo da internet, e estou tentando modificar ele para ficar do jeito que preciso, peguei ele sem funcao e preciso de funcao para cada acao e apos criar a funcao de cadastro apenas para teste nao salva a variavel no arquivo binario.

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

struct Contato{
  char nome[100];
  int  telefone;
};

struct Contato *agenda;
FILE *fp;

int cadastra(int n, int cap){
    fp = fopen("xxx.dat","a+b");
    if(n == cap){
        cap *= 2;
        agenda = realloc(agenda, sizeof(struct Contato)*cap);
    }
    printf("Digite o nome: ");
    scanf(" %[^\n]", agenda[n].nome);
    printf("Digite o telefone: ");
    scanf("%d", &agenda[n].telefone);
    fwrite(agenda, sizeof(struct Contato), n, fp);
    fclose(fp);
    return n++;
}

int main(){

    int cap; 
    int n;  
    int opc; 
    int i;
    struct Contato *agenda;
    FILE *fp;
    
    fp = fopen("xxx.dat","rb");
    printf("N; %d \n", n);
    if(fp==NULL){
        n = 0; 
        cap = 20; 
        agenda = (struct Contato *)malloc(sizeof(struct Contato)*cap);
    }
    else{ 
        fread(&n, sizeof(int), 1, fp);
        cap = n*2; 
        agenda = (struct Contato *)malloc(sizeof(struct Contato)*cap);
        fread(agenda, sizeof(struct Contato), n, fp);
        fclose(fp);
    }
  
    do{
        printf("*** Menu ***\n");
        printf("1) Cadastrar contato.\n");
        printf("2) Exibir contatos.\n");
        printf("3) Apagar.\n");
        printf("4) Sair.\n");
        scanf("%d",&opc);
        switch(opc){
               case 1:
                   printf("n %d\n", n);
                   n = cadastra(n, cap);
                   printf("n %d\n", n);
            break;
        }
    if(opc==2){
        for(i=1; i<4; i++){
            printf("*** Contato %d ***\n",i+1);
            printf("Nome: %s\n",agenda.nome);
            printf("Telefone: %d\n",agenda.telefone);
        }
        printf("N; %d \n", n);
    }
    else if(opc==3){
        char nome[100];
        int j;
        scanf("%s",&nome);
        for(i=0; i<n; i++){
            if (strcmp(agenda.nome, nome)==0){
                for(j=i+1; j<n; j++){
                        strcpy(agenda[j-1].nome,agenda[j].nome);
                        agenda[j-1].telefone=agenda[j].telefone;
                }
            n--;
            i=n;
            }
        }
    }
    }while(opc!=4); 
    
    if(n>0){
    fp = fopen("xxx.dat","wb");
    fwrite(&n, sizeof(int), 1, fp);
    fwrite(agenda, sizeof(struct Contato), n, fp);
    fclose(fp);
    }

    free(agenda);
  
  return 0;
}

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

  • Conteúdo Similar

    • Por jadergfarinon
      Bom dia pessoal, não sei quase nada de JavaScript e não consegui encontrar nada relacionado com o que eu preciso então desculpa se eu sair com alguma pergunta idiota aqui, bom... eu tenho um Mini Paint rodando aqui, o script não foi feito por mim, já estava rodando aqui na empresa quando eu entrei e provavelmente foi pego na internet, bom, é uma tela em branco na qual é possível desenhar, seja com o mouse ou com o dedo na tela do celular, tem também dois botões, um para limpar a tela e outro para salvar, quando clicamos em salvar ele exibe um prompt para digitar o nome e salva o desenho em png, bom, hoje ele salva na máquina em um local de acordo com a configuração do navegador utilizado, porem estou precisando modificar para que esse arquivo seja enviado para o servidor aonde o site está rodando mas não faço idéia de como modificar o java script para isso, seguem os códigos, se alguém puder me ajudar agradeço muito
       
       
      HTML (index.html)
      <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>Teste</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <main> <div class="left-block"> <div class="colors"> <!--Cores não utilizadas--> <!-- <button type="button" value="#0000ff"></button> <button type="button" value="#009fff"></button> <button type="button" value="#0fffff"></button> <button type="button" value="#bfffff"></button> <button type="button" value="#000000"></button> <button type="button" value="#333333"></button> <button type="button" value="#666666"></button> <button type="button" value="#999999"></button> <button type="button" value="#ffcc66"></button> <button type="button" value="#ffcc00"></button> <button type="button" value="#ffff00"></button> <button type="button" value="#ffff99"></button> <button type="button" value="#003300"></button> <button type="button" value="#555000"></button> <button type="button" value="#00ff00"></button> <button type="button" value="#99ff99"></button> <button type="button" value="#f00000"></button> <button type="button" value="#ff6600"></button> <button type="button" value="#ff9933"></button> <button type="button" value="#f5deb3"></button> <button type="button" value="#330000"></button> <button type="button" value="#663300"></button> <button type="button" value="#cc6600"></button> <button type="button" value="#deb887"></button> <button type="button" value="#aa0fff"></button> <button type="button" value="#cc66cc"></button> <button type="button" value="#ff66ff"></button> <button type="button" value="#ff99ff"></button> <button type="button" value="#e8c4e8"></button> <button type="button" value="#ffffff"></button> --> </div> <div class="brushes"> <!--Espessura da linha não utilizada--> <!-- <button type="button" value="1"></button> <button type="button" value="2"></button> <button type="button" value="3"></button> <button type="button" value="4"></button> <button type="button" value="5"></button> --> </div> <!--Botões--> <div class="buttons"> <button id="clear" type="button">Limpar</button> <button id="save" type="button">Salvar</button> </div> </div> <!--Tamanho do quadro--> <div class="right-block"> <canvas id="paint-canvas" width="640" height="400"></canvas> </div> </main> <script src="js/index.js"></script> </body> </html>  
      css(css/style.css)
      * { box-sizing: border-box; } main { width: 800px; border: 1px solid #e0e0e0; margin: 0 auto; display: flex; flex-grow: 1; } .left-block { width: 160px; border-right: 1px solid #e0e0e0; } .colors { background-color: #ece8e8; text-align: center; padding-bottom: 5px; padding-top: 10px; } .colors button { display: inline-block; border: 1px solid #00000026; border-radius: 0; outline: none; cursor: pointer; width: 20px; height: 20px; margin-bottom: 5px } .colors button:nth-of-type(1) { background-color: #0000ff; } .colors button:nth-of-type(2) { background-color: #009fff; } .colors button:nth-of-type(3) { background-color: #0fffff; } .colors button:nth-of-type(4) { background-color: #bfffff; } .colors button:nth-of-type(5) { background-color: #000000; } .colors button:nth-of-type(6) { background-color: #333333; } .colors button:nth-of-type(7) { background-color: #666666; } .colors button:nth-of-type(8) { background-color: #999999; } .colors button:nth-of-type(9) { background-color: #ffcc66; } .colors button:nth-of-type(10) { background-color: #ffcc00; } .colors button:nth-of-type(11) { background-color: #ffff00; } .colors button:nth-of-type(12) { background-color: #ffff99; } .colors button:nth-of-type(13) { background-color: #003300; } .colors button:nth-of-type(14) { background-color: #555000; } .colors button:nth-of-type(15) { background-color: #00ff00; } .colors button:nth-of-type(16) { background-color: #99ff99; } .colors button:nth-of-type(17) { background-color: #f00000; } .colors button:nth-of-type(18) { background-color: #ff6600; } .colors button:nth-of-type(19) { background-color: #ff9933; } .colors button:nth-of-type(20) { background-color: #f5deb3; } .colors button:nth-of-type(21) { background-color: #330000; } .colors button:nth-of-type(22) { background-color: #663300; } .colors button:nth-of-type(23) { background-color: #cc6600; } .colors button:nth-of-type(24) { background-color: #deb887; } .colors button:nth-of-type(25) { background-color: #aa0fff; } .colors button:nth-of-type(26) { background-color: #cc66cc; } .colors button:nth-of-type(27) { background-color: #ff66ff; } .colors button:nth-of-type(28) { background-color: #ff99ff; } .colors button:nth-of-type(29) { background-color: #e8c4e8; } .colors button:nth-of-type(30) { background-color: #ffffff; } .brushes { //background-color: purple; padding-top: 5px } .brushes button { display: block; width: 100%; border: 0; border-radius: 0; background-color: #ece8e8; margin-bottom: 5px; padding: 5px; height: 30px; outline: none; position: relative; cursor: pointer; } .brushes button:after { height: 1px; display: block; background: #808080; content: ''; } .brushes button:nth-of-type(1):after { height: 1px; } .brushes button:nth-of-type(2):after { height: 2px; } .brushes button:nth-of-type(3):after { height: 3px; } .brushes button:nth-of-type(4):after { height: 4px; } .brushes button:nth-of-type(5):after { height: 5px; } .buttons { height: 80px; padding-top: 10px; } .buttons button { display: block; width: 100%; border: 0; border-radius: 0; background-color: #ece8e8; margin-bottom: 5px; padding: 5px; height: 30px; outline: none; position: relative; cursor: pointer; font-size: 16px; } .right-block { width: 640px height:100vh; } #paint-canvas { cursor:crosshair; }  
      JavaScript (js/index.js)
      window.onload = function () { // Definitions var canvas = document.getElementById("paint-canvas"); var context = canvas.getContext("2d"); var boundings = canvas.getBoundingClientRect(); // Specifications var mouseX = 0; var mouseY = 0; context.strokeStyle = 'black'; // initial brush color context.lineWidth = 1; // initial brush width var isDrawing = false; // Handle Colors var colors = document.getElementsByClassName('colors')[0]; colors.addEventListener('click', function(event) { context.strokeStyle = event.target.value || 'black'; }); // Handle Brushes var brushes = document.getElementsByClassName('brushes')[0]; brushes.addEventListener('click', function(event) { context.lineWidth = event.target.value || 1; }); // Mouse Down Event canvas.addEventListener('mousedown', function(event) { setMouseCoordinates(event); isDrawing = true; // Start Drawing context.beginPath(); context.moveTo(mouseX, mouseY); }); // Mouse Move Event canvas.addEventListener('mousemove', function(event) { setMouseCoordinates(event); if(isDrawing){ context.lineTo(mouseX, mouseY); context.stroke(); } }); // Mouse Up Event canvas.addEventListener('mouseup', function(event) { setMouseCoordinates(event); isDrawing = false; }); // Handle Mouse Coordinates function setMouseCoordinates(event) { mouseX = event.clientX - boundings.left; mouseY = event.clientY - boundings.top; } // Handle Clear Button var clearButton = document.getElementById('clear'); clearButton.addEventListener('click', function() { context.clearRect(0, 0, canvas.width, canvas.height); }); // Handle Save Button var saveButton = document.getElementById('save'); saveButton.addEventListener('click', function() { var imageName = prompt('Digite o Número da movimentação.'); var canvasDataURL = canvas.toDataURL(); var a = document.createElement('a'); a.href = canvasDataURL; a.download = imageName || 'drawing'; a.click(); }); };  
    • Por EduardoLenz
      Olá, pessoal,
       
      Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso). 
      Ambos utilizam a linguagem C. 
       
      Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não. 
       
      O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
      dado_recebido[]={'P', '1', '2', '3'}; 
      Para poder utilizar um switch 
      switch(dado_recebido[0])
      {
      case 'P':....
      }
       
      alguém tem alguma ideia de como posso fazer a conversão? 
       
      Agradeço desde já. 
    • Por Caioba
      Salve! Estou com problemas ao solucionar uma questão que me foi proposta na linguagem C. Já desenvolvi todo o código, mas os casos de teste não batem.
       
      Questão: 
      A agência cearense para investigações criminais denominada OBI (Operação de Baita Investigação) notou que, a exemplo do que ocorreu na Petrobrás, muito dinheiro foi desviado dos cofres públicos do estado para pagamento de propina a políticos nos últimos anos, especialmente pelo partido QU (Quadrilha Unida).
      A investigação está em andamento e a agência recrutou você para converter alguns valores que ficaram com caracteres estranhos após terem sidos descriptografados dos arquivos originais. Sua tarefa neste caso é relativamente simples: basta retirar todos os caracteres estranhos (não numéricos) de cada um dos dois valores disponíveis. Apenas tome o cuidado de separar os primeiros 11 dígitos do primeiro valor. Eles correspondem ao CPF do corrupto :)
      Entrada: A entrada é composta por duas linhas, cada uma delas contendo entre 1 e 60 caracteres ('0'-'9' e outros caracteres não numéricos ou, pelo menos, 1 caracter '0'-'9') e no máximo um ponto ".". Desconsiderando os caracteres não numéricos, o número final não deve ter mais de 17 caracteres (incluindo o ponto decimal).
      Exemplo de entrada:
      7a5a6adfg4a4adsfgsd9fg6aa904aa91#$%1
      42**&7746.67abc$
      Saída: Imprima o CPF do corrupto e o valor que foram desviados dos cofres públicos.
      Exemplo de saída
      cpf 75644969049
      propina 11427746.67
       
      Meu código abaixo:
      #include<stdio.h> #include<string.h> int main(){ char caract[60]; char caract2[60]; char cpf[10]; char propina[15]; int i=0, j=0; scanf("%s", caract); for(i = 0; caract[i] != '\0'; i++){ if(caract[i] >= 48 && caract[i] <= 57){ if(j<11){ cpf[j] = caract[i]; } j++; } } cpf[11] = '\0'; cpf[12] = '\0'; scanf("%s", caract2); for(i = 0; caract2[i] != '\0'; i++){ if((caract2[i] >= 48 && caract2[i] <= 57) || caract2[i] == 46){ propina[j] = caract2[i]; j++; } } cpf[10] = '\0'; printf("cpf %s", cpf); printf("propina %s", propina); }  
    • Por TutoDS
      Boa tarde pessoal.
      Sou novo a programar em C, programo diariamente em PHP e já programei em C#.
      Porém agora tenho que fazer um projeto para a minha Licenciatura em C, um programa estilo Via Verde.
      Mas estou com dificuldades, pois o meu pensamento está mais virado para Base de Dados.
      Se alguém me puder tirar as seguintes dúvidas agradeço:
      Como recomendam estruturar os ficheiros para guardar os dados do cliente, os veículos e as viagens? Como posso fazer a pesquisa num ficheiro, por exemplo inserir 123456789 e aparecer me os dados do cliente com esse NIF? Obrigado
    • Por LucasCBSouto
      Pessoal, estou com dificuldades na solução deste problema:  
       
      Seja um número N natural maior ou igual a 1. Fazer um algoritmo que calculo S = 1 + 1/2+ 1/3 + 1/4 + ... + 1/N.
       
      Meu código está assim:
       
      #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int i, n; float soma; print("Entre com n: "); scanf("%d", &n); soma = 0; { for (i=1; i<=&n; i++) soma = soma + (1/i); } printf("\n O somatorio das fracoes eh: %f", soma); }  
      Alguém pode me dizer por que não funcionando? O que deve mudar ou o que falta inserir?
       
      Solução:
      https://forum.imasters.com.br/topic/316721-resolvido soma-com-fração/
×

Informação importante

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