-
Posts
54 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que gebuchh postou
-
@arfneto como eu implementaria isso no código?
-
Acabei de editar e coloquei o código completo
-
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); }
-
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); }
-
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"); }
-
O que mudar nesse PC??
gebuchh respondeu ao tópico de gebuchh em Montagem e upgrade de computadores de mesa
@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?? -
O que mudar nesse PC??
gebuchh respondeu ao tópico de gebuchh em Montagem e upgrade de computadores de mesa
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? -
O que mudar nesse PC??
gebuchh respondeu ao tópico de gebuchh em Montagem e upgrade de computadores de mesa
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 -
O que mudar nesse PC??
gebuchh respondeu ao tópico de gebuchh em Montagem e upgrade de computadores de mesa
é sério -
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
-
Tela dando umas congeladas/tela preta (mas jogo continua rodando)
gebuchh respondeu ao tópico de gebuchh em Placas de vídeo
Po, depois que eu dei o banho de alcool, nele, o Windows 10 tava meio travando, ai instalei o Windows 7 nessa quarta-feira... -
Tela dando umas congeladas/tela preta (mas jogo continua rodando)
gebuchh postou um tópico em Placas de vídeo
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 -
Windows 10 64b
-
Minha Barra de Tarefas aparece em Youtube, jogos que eram para ficar em Tela cheia, E SIMPLESMENTE DO NADA ela aparece, ai depois desaparece, tem alguma ideia?
-
O hd funciona, porque fui nab ios e ele ta la, vou tentar formatar
-
imagine o hd no pc, agora imagine q colicou o dedo por baixo dele e, mexeu ele pra cima imagine o hd no pc, agora imagine q colicou o dedo por baixo dele e, mexeu ele pra cimaFalei com meu professoe, ele disse que pode ser o cabo
-
desligado, mas o que eu acho estranho é que o windows liga, depois de um minuto mais ou menos da bluescreen
-
sim tenho, por ex, sabe quando você coloca uma placa meio q mal encaixada, ai fica meio "mole" então ele tava assim
-
Comprei um PC novo. Abri ele e vi que o HD estava parafusado apenas de um lado só. Ai eu mexi ele pra cima e pra baixo e fechei normal e agora eu ligo o PC de boa mas depois de um tempinho ele desliga e dá blue screen falando que o Windows viu um problema e reiniciou.
-
Não consigo salvar Render em PNG
gebuchh postou um tópico em Gravação e edição de imagens, áudio e vídeo
Precisava fazer um Trabalho pro meu Curso, em que precisava fazer um Panfleto de uma loja de Motos, pra isso procurei uma Imagem sem Fundo de uma moto, mas na hora de salvar, não consigo selecionar PNG, pra importar para o Corel... Antes de formatar meu PC eu conseguia salvar em vários tipos... Mas agora não .-. -
Ver se pego uma DDR2 com meu professor, qlqer coisa pego de uma maquina lá, é umas 10 pra 6 aluno cada turma que só fica formatando toda aula k
-
Meu PC é Celeron E3300 de 2.50GHz e 2GB de Ram, antes era o Ultimate 32 Bits, mas sei lá x_X
-
Home Basic 32 Bits / Acho que atualizei, baixei Driver Booster / DirectX fala que veio no PC, mas to procurando um / Driver de Vídeo, Não :/ No dxdiag fala que é DirectX 11, mas não acho isso no Pesquisar no Menu Iniciar
-
Depois que formatei meu PC que era um Windows 7 Ultimate 32 Bits, fiquei com muito menos FPS no meu Jogo (LOL) Formatei agora e coloquei Windows 7 Home Basic 32 Bits, pra ver se o PC ficava mais leve, só que agora meu LOL ta com FPS MUITOOO Baixo Antes eu jogava com 100 no Alto 120 no Baixo Agora eu jogo com 60 no Baixo dropando pra 30, será que pode ser Driver ou algo do tipo? Meu PC é 2GB de Ram, um Celeron E3300 e uma HD 5450, sei que é ruim, mas antes rodava LOL de boa, agora nem isso ;-;
-
A minha ja ta 60 sem OverClock, dafuck!
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