Ir ao conteúdo
  • Cadastre-se

gebuchh

Membro Pleno
  • Posts

    58
  • Cadastrado em

  • Última visita

Reputação

0
  1. @arfneto como eu implementaria isso no código?
  2. Acabei de editar e coloquei o código completo
  3. Estou desenvolvendo um código, de cadastro de produtos utilizando arquivos, fiz funções para cadastro, listagem, edição e remoção, o problema está quando tento fazer a edição de um item, cada item tem ID, nome, quantidade e preço, a intenção é manter ID e nome, e alterar a quantidade e preço, porém, quando faço a edição, o nome não se mantém (fica zerado), além do que aparece duplicado os itens, o antigo, com ID, Nome, quantidade e preço, e o editado, com ID, nova quantidade e novo preço. Aqui estão o código e logo em seguida a imagem do código rodando. #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *ptrArqProd; struct produto{ int id; char texto[250]; int qntd; float preco; }; void cadastraProd(); void consultaProd(); void editaProd(); void removeProd(); void ordenaID(); int contaLinhas(); void criaArquivos() { FILE *produtos = fopen("produtos.txt", "r"); if (produtos == NULL){ produtos = fopen ("produtos.txt", "w"); fprintf (produtos,"id-nome-quantidade-preco\n___________________"); } fclose(produtos); } void limpaBuffer() { int c = 0; while ((c = getchar()) != '\n' && c != EOF) {} return; } int main() { criaArquivos(); //verifica se o arquivo produtos.txt ja existe e cria se necessario int menu; do{ printf("\nMENU\n(1) Cadastrar produto(s)\n(2) Consultar estoque\n(3) Atualizar produto(s)\n(4) Deletar produto(s)\n(0) Sair\n"); printf("Acao desejada:"); scanf("%i", &menu); switch(menu){ case 1: cadastraProd(); break; case 2: consultaProd(); break; case 3: editaProd(); break; case 4: removeProd(); break; case 5: contaLinhas(); break; case 0: printf("\nPrograma finalizado\n"); break; default: printf("\nnao tem easteregg aqui\n"); break; } } while(menu); return 0; } void cadastraProd() { //mudar tipo funcao char resposta, impressao[22]; int qntd, cont = 0, linhas = contaLinhas(); struct produto teste; ptrArqProd = fopen("produtos.txt", "a"); printf("Quantos produtos deseja cadastrar:"); scanf("%i", &qntd); do{ if(qntd == 1 || cont < qntd) fprintf(ptrArqProd, "\n"); printf("\nDados do produto:\n"); teste.id = linhas + cont + 1; printf("ID: %i", teste.id); fprintf(ptrArqProd, "%d-", teste.id); printf("\nNome do Produto:"); scanf("%s",teste.texto); fprintf(ptrArqProd, "%s-", teste.texto); printf("Quantidade:"); scanf("%i", &teste.qntd); fprintf(ptrArqProd, "%i-", teste.qntd); printf("Preco:"); scanf("%f", &teste.preco); fprintf(ptrArqProd, "R$%.2f", teste.preco); printf("ID: %d | Nome do Produto: %s | Quantidade: %d | Preco: R$%.2f\n", teste.id, teste.texto, teste.qntd, teste.preco); fflush(stdin); //PERGUNTAR PROFESSOR cont++; } while(cont < qntd); printf("Deseja cadastrar mais produtos? (s/n) "); scanf("%c", &resposta); if(resposta != 'n'){ fclose(ptrArqProd); cadastraProd(); } fclose(ptrArqProd); printf("\n"); } void consultaProd() { char impressao[22]; ptrArqProd = fopen("produtos.txt", "r"); while(fgets(impressao, 22, ptrArqProd) != NULL){ printf("%s", impressao); } printf("\n"); fclose(ptrArqProd); } void editaProd() { char impressao[22]; char id_pesquisa[256]; int i=0,flag=0,cont=1; char teste[22]; struct produto teste1; ptrArqProd = fopen("produtos.txt", "r"); printf("\nInsira o ID do produto que deseja atualizar: "); scanf("%255s",id_pesquisa); while(fgets(impressao, 22, ptrArqProd) != NULL){ for(i=0;i<strlen(impressao);i++){ if(impressao[i]=='-') break; teste[i] = impressao[i]; } teste[i]='\0'; if(strcmp(teste,id_pesquisa)==0){ flag = 1; break; } cont++; } if(flag==0){ printf("Produto não encontrado"); return; } teste1.id = atoi(id_pesquisa); printf("Insira a nova quantidade do produto de ID %d : ",teste1.id); scanf("%d",&teste1.qntd); printf("Insira o novo preco do produto de ID %d : ", teste1.id); scanf("%f",&teste1.preco); //Removendo a linha, para inserir de novo no arquivo FILE *input = fopen("produtos.txt", "r"); //Arquivo de entrada. FILE *output = fopen("transferindo.txt", "w"); //Arquivo de saída. char texto[1001] = ""; //Uma string larga o suficiente para extrair o texto total de cada linha. int linha_selecionada = cont,linha_atual = 1; while(fgets(texto, 1001, input) != NULL){ if(linha_atual != linha_selecionada){ fputs(texto, output); } memset(texto, 0, sizeof(char) * 1001); linha_atual += 1; } fclose(ptrArqProd); fclose(input); fclose(output); remove("produtos.txt"); rename("transferindo.txt", "produtos.txt"); fflush(stdin); //PERGUNTAR PROFESSOR //inserindo novamente a linha editada ptrArqProd = fopen("produtos.txt", "a"); fprintf(ptrArqProd, "\n"); fprintf(ptrArqProd, "%d-", teste1.id); //fprintf(ptrArqProd, "%s-", teste1.texto); fprintf(ptrArqProd, "%i-", teste1.qntd); fprintf(ptrArqProd, "%.2f", teste1.preco); fflush(stdin); //PERGUNTAR PROFESSOR printf("Produto editado com sucesso\n"); fclose(ptrArqProd); } void removeProd() { char id_pesquisa[256]; char impressao[22],teste[22]; int i=0,flag=0,cont=1; ptrArqProd = fopen("produtos.txt", "r"); printf("Insira o ID do produto que deseja remover: "); scanf("%255s",id_pesquisa); while(fgets(impressao, 22, ptrArqProd) != NULL){ for(i=0;i<strlen(impressao);i++){ if(impressao[i]=='-') break; teste[i] = impressao[i]; } teste[i]='\0'; if(strcmp(teste,id_pesquisa)==0){ flag = 1; break; } cont++; } if(flag != 0) { printf("\n"); printf("Produto deletado com sucesso\n"); } if(flag==0){ printf("Produto nao encontrado\n"); return; } //Removendo a linha, para inserir de novo no arquivo FILE *input = fopen("produtos.txt", "r"); //Arquivo de entrada. FILE *output = fopen("transferindo.txt", "w"); //Arquivo de saída. char texto[1001] = ""; //Uma string larga o suficiente para extrair o texto total de cada linha. int linha_selecionada = cont,linha_atual = 1; while(fgets(texto, 1001, input) != NULL){ if(linha_atual != linha_selecionada){ fputs(texto, output); } memset(texto, 0, sizeof(char) * 1001); linha_atual += 1; } fclose(ptrArqProd); fclose(input); fclose(output); remove("produtos.txt"); rename("transferindo.txt", "produtos.txt"); fflush(stdin); //PERGUNTAR PROFESSOR } int contaLinhas() { char impressao[22]; int i = 0; ptrArqProd = fopen("produtos.txt", "r"); while(fgets(impressao, 22, ptrArqProd) != NULL){ i++; } printf("\n"); fclose(ptrArqProd); return (i - 2); }
  4. gebuchh

    C Erro em código crud

    Criei um crud básico em C, porém estou tendo dificuldades em fazer a função atualizar e deletar, e sempre que compilo aparece o aviso "[Warning] '_errno' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes]" #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *ptrArqProd; extern int errno; struct produto { int id; //char texto[250]; int qntd; float preco; int tipo; //struct produto teste; }; void cadastraProd(); void consultaProd(); void editaProd(); void removeProd(); int contaLinhas(); int main(){ int menu; do { printf("\nMENU\n(1) Cadastrar produto(s)\n(2) Consultar estoque\n(3) Atualizar produto(s)\n(4) Deletar produto(s)\n(0) Sair\n"); printf("Acao desejada:"); scanf("%i", &menu); switch(menu){ case 1: cadastraProd(); break; case 2: consultaProd(); break; case 3: editaProd(); break; case 4: removeProd(); break; case 5: contaLinhas(); break; case 0: printf("\nPrograma finalizado\n"); break; default: printf("\nnao tem easteregg aqui\n"); break; } } while(menu); return 0; } void cadastraProd() { //mudar tipo funcao char resposta, impressao[22]; int qntd, cont = 0, linhas = contaLinhas(); struct produto teste; ptrArqProd = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "a"); printf("qnts produtos deseja cadastrar:"); scanf("%i", &qntd); do { if(qntd == 1 || cont < qntd) fprintf(ptrArqProd, "\n"); printf("\nDados do produto:\n"); teste.id = linhas + cont + 1; printf("id: %i", teste.id); fprintf(ptrArqProd, "%d-", teste.id); printf("\nQuantidade:"); scanf("%i", &teste.qntd); fprintf(ptrArqProd, "%i-", teste.qntd); printf("Preco:"); scanf("%f", &teste.preco); fprintf(ptrArqProd, "%.2f", teste.preco); printf("id: %d | qntd: %d | preco: %f\n", teste.id, teste.qntd, teste.preco); fflush(stdin); //PERGUNTAR PROFESSOR cont++; } while(cont < qntd); printf("cadastrar mais produtos?(s/n) "); scanf("%c", &resposta); if(resposta != 'n') cadastraProd(); fclose(ptrArqProd); printf("\n"); } void consultaProd(){ char impressao[22]; ptrArqProd = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "r"); while(fgets(impressao, 22, ptrArqProd) != NULL){ printf("%s", impressao); } printf("\n"); fclose(ptrArqProd); } void editaProd(){ char impressao[22]; char *id_pesquisa = ""; int i=0,flag=0,cont=1; char teste[22]; struct produto teste1; ptrArqProd = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "r"); printf("Insira o ID do produto que deseja atualizar: "); scanf("%s",id_pesquisa); while(fgets(impressao, 22, ptrArqProd) != NULL){ for(i=0;i<strlen(impressao);i++){ if(impressao[i]=='-') break; teste[i] = impressao[i]; } teste[i]='\0'; if(strcmp(teste,id_pesquisa)==0){ flag = 1; break; } cont++; } if(flag==0){ printf("Produto nao encontrado"); return; } teste1.id = atoi(id_pesquisa); printf("Insira a nova quantidade do produto de ID %d : ",teste1.id); scanf("%d",&teste1.qntd); printf("Insira o novo preco do produto de ID %d : ", teste1.id); scanf("%f",&teste1.preco); //Removendo a linha, para inserir de novo no arquivo FILE *input = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "r"); //Arquivo de entrada. FILE *output = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\transferindo.txt", "w"); //Arquivo de saída. char texto[1001] = ""; //Uma string larga o suficiente para extrair o texto total de cada linha. int linha_selecionada = cont,linha_atual = 1; while(fgets(texto, 1001, input) != NULL){ if(linha_atual != linha_selecionada){ fputs(texto, output); } memset(texto, 0, sizeof(char) * 1001); linha_atual += 1; } fclose(ptrArqProd); fclose(input); fclose(output); remove("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt"); rename("C:\\Users\\Lenovo\\Downloads\\aed\\transferindo.txt", "C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt"); fflush(stdin); //PERGUNTAR PROFESSOR //inserindo novamente a linha editada ptrArqProd = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "a"); fprintf(ptrArqProd, "\n"); fprintf(ptrArqProd, "%d-", teste1.id); fprintf(ptrArqProd, "%i-", teste1.qntd); fprintf(ptrArqProd, "%.2f", teste1.preco); fflush(stdin); //PERGUNTAR PROFESSOR printf("Produto editado com sucesso\n"); fclose(ptrArqProd); } void removeProd(){ char *id_pesquisa=""; char impressao[22],teste[22]; int i=0,flag=0,cont=1; ptrArqProd = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "r"); printf("Insira o ID do produto que deseja remover: "); scanf("%s",id_pesquisa); while(fgets(impressao, 22, ptrArqProd) != NULL){ for(i=0;i<strlen(impressao);i++){ if(impressao[i]=='-') break; teste[i] = impressao[i]; } teste[i]='\0'; if(strcmp(teste,id_pesquisa)==0){ flag = 1; break; } cont++; } if(flag==0){ printf("Produto nao encontrado\n"); return; } //Removendo a linha, para inserir de novo no arquivo FILE *input = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "r"); //Arquivo de entrada. FILE *output = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\transferindo.txt", "w"); //Arquivo de saída. char texto[1001] = ""; //Uma string larga o suficiente para extrair o texto total de cada linha. int linha_selecionada = cont,linha_atual = 1; while(fgets(texto, 1001, input) != NULL){ if(linha_atual != linha_selecionada){ fputs(texto, output); } memset(texto, 0, sizeof(char) * 1001); linha_atual += 1; } fclose(ptrArqProd); fclose(input); fclose(output); remove("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt"); rename("C:\\Users\\Lenovo\\Downloads\\aed\\transferindo.txt", "C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt"); fflush(stdin); //PERGUNTAR PROFESSOR } int contaLinhas(){ char impressao[22]; int i = 0; ptrArqProd = fopen("C:\\Users\\Lenovo\\Downloads\\aed\\produtos.txt", "r"); while(fgets(impressao, 22, ptrArqProd) != NULL){ i++; } printf("numero de produtos cadastrados:%i", i - 2); printf("\n"); fclose(ptrArqProd); return (i - 2); }
  5. Fazendo um código em C, em que eu possa criar itens usando Arquivo, porém não consigo fazer uma Função para deletar um item especifico do Arquivo.txt Minha função de cadastrar void cadastraProd(){ //mudar tipo funcao char resposta, impressao[22]; int qntd, cont = 0, linhas = contaLinhas(); struct produto teste; ptrArqProd = fopen("produtos.txt", "a"); printf("qnts produtos deseja cadastrar:"); scanf("%i", &qntd); do{ if(qntd == 1 || cont < qntd) fprintf(ptrArqProd, "\n"); printf("\nDados do produto:\n"); teste.id = linhas + cont + 1; printf("id: %i", teste.id); fprintf(ptrArqProd, "%d-", teste.id); printf("\nQuantidade:"); scanf("%i", &teste.qntd); fprintf(ptrArqProd, "%i-", teste.qntd); printf("Preco:"); scanf("%f", &teste.preco); fprintf(ptrArqProd, "%.2f", teste.preco); printf("id: %d | qntd: %d | preco: %f\n", teste.id, teste.qntd, teste.preco); fflush(stdin); //PERGUNTAR PROFESSOR cont++; } while(cont < qntd); printf("cadastrar mais produtos?(s/n) "); scanf("%c", &resposta); if(resposta != 'n') cadastraProd(); fclose(ptrArqProd); printf("\n"); }
  6. @moraesandre1975 Eu penso em pegar uma mobo lga1150, processador i5 8/9a Geração, GTX 1660 e +8GB Ram Porém não posso fazer tudo de uma vez, poderia trocar a Mobo e o Processador, achei um i5-9400F + Aorus B360M por 1600 a vista na KaBuM ou pegar a GTX 1660 + 8GB de Memoria Ram, também por 1600 na KaBuM. (Quero fazer uma mudança dessa agora e a outra no fim do ano), pra agora, qual das duas é melhor??
  7. A GTX 1660 daria gargalo no meu Processador?? Seria bom trocar pra um I7 4770 3.4ghz agora ou melhor esperar um pouco e trocar a MoBo e pegar um I5 de 9a geração?
  8. Não só pra WZ, quero fazer um upgrade nele como um todo, mas não poderia ser tudo de uma vez Pra começar é trocar a vga pra RX580 + 8GB de Ram que tu fala
  9. Tenho um PC com essas Configs I5 4440 8GB Ram GTX 1050 Ti 4GB Fonte 550w MoBo B85M-E Pra maioria dos meus jogos atuais, como LoL, CSGO ou Fifa, essa config é suficiente pra rodar sem problema, mas pra jogos mais pesados, tipo o COD Warzone, já dá um pouco de gargalo, rodando na faixa de 60 FPS ou menos, preciso fazer algumas alterações nessas configs, mas obvio que não posso trocar tudo de uma só vez, então se puderem fazer uma ordem de importância com as sugestões de peças pra eu comprar, agradeço, tmj
  10. Meu PC tem a seguinte config: Processador I5 4440 MoBo B85M/e Fonte VS500 8GB Ram DDR3 Eu usava uma GTX 960, porém, eu derramei suco no gabinete, e isso fez a VGA estragar, agora comprei ma GTX 1050 TI 4GB, da Zotac "https://www.kabum.com.br/cgi-local/site/produtos/descricao_ofertas.cgi?codigo=85494" Peguei ela hoje, então desconectei o computador da tomada, abri o gabinete e conectei a placa de vídeo no Pci-E, porém, ao ligar, não dá sinal de imagem, tentei Conexão VGA + Adaptador DVI, Conexão com Cabo HDMI e nada, o sistema liga, é possível ouvir o som de inicialização do Windows, porém, a tela fica azul, tentei tirar o cabo da VGA e liguar na MoBo para ter imagem OnBoard, porém, não consegui imagem, só apos desligar o gabinete, retirar a vga e re-ligar o computador sem ela conectada que consegui imagem... Como posso resolver?
  11. Po, depois que eu dei o banho de alcool, nele, o Windows 10 tava meio travando, ai instalei o Windows 7 nessa quarta-feira...
  12. Config: I5 4440; 8GB Ram; GTX 960 4GB; Fonte 500w; HD 1TB Bem, nesse meu computador em questão, derramei Guaravita na mesa, aí quando vi que tinha caído no computador, eu desliguei e levei numa Loja de Infórmatica, foi feito alguns banhos de Álcool Isopropílico nele, e etc. Trouxe de volta para casa, agora, quando eu vou jogar, às vezes acontece da tela (monitor) dar uma congelada ou ficar meio preta, PORÉM, o jogo continua rodando, os comandos de teclado/mouse funcionando, os sons dos jogos saindo no Headset, mas a imagem no monitor fica travada... Tem vezes que dou Alt+Tab e volta pro jogo normal, mas às vezes não... Pode ser que a placa-mãe ou a Placa de Vídeo estragaram alguma coisa ou algo do tipo?? Gravei um vídeo pelo celular do problema em questão
  13. Bem, eu tava almocando, e meio que derramei um pouco de suco em cima do meu gabinente, depois disso a minha tela ficou com uns quadrados em vermelho, ai eu desliguei o PC por um momento, depois disso eu abri ele e vi que na Placa de Video (GTX 960 4GB) tinha marcas de que caiu suco la, mas ja tinha secado, ai eu passei um pano meio umido pra poder tirar o que tinha de suco la, e sequei com secador em vento frio, apos isso eu devolvi a Placa de Video pra a placa-mãe e fechei meu PC So que, agora, eu to jogando e simplesmente a tela congela ou fica toda preta, e o jogo minimiza e nao volta mais, e eu tenho que fechar o jogo e abrir tudo de novo, eu to usando a VGA nesse momento Ate apareceu uns quadrado preto assim do nada

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...