Ir ao conteúdo
  • Cadastre-se

João Silvestre

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

Reputação

3
  1. Desculpe mas eu não estou a perceber onde tenho de mudar já agora eu estive a pensar numa coisa eu tenho o meu stock.txt vazio tal como se tivesse sido acabado de criar com 0kb e mesmo assim estão a aparecer aquelas coisas todas.
  2. Mas onde examente é que eu deveria mudar aqui certo? for(i = 0; i < *quant; i++) { printf("Código: %d\n", stock[i].codigo); printf("Nome: %s\n", stock[i].nome); printf("Marca: %s\n", stock[i].marca); printf("Preço: %.2f\n", stock[i].preco); }
  3. Olá, eu só tenho perto de um ano de aprendizagem de c e gostaria de saber o que estou a fazer mal para o meu programa ficar assim. #include <stdio.h> #include <stdlib.h> #include <locale.h> struct produto { int codigo; char nome[20]; char marca[20]; float preco; }; void inserir(struct produto stock[], int *quant, int inserirP); void guardar(struct produto stock[], int *quant); void ler(struct produto stock[], int *quant); void listar(struct produto stock[], int *quant); int main() { setlocale(LC_ALL, "portuguese"); struct produto stock[100]; int quantid, opcao, inserirP; ler(stock, &quantid); printf("----------\n0 - Sair\n1 - Inserir Produto\n2 - Listar Produto\n----------\n\n"); do { printf("Insira uma opção: "); scanf("%d", &opcao); if(opcao == 1) { printf("Insira a quantidade de produtos que deseja inserir: "); scanf("%d", &inserirP); inserir(stock, &quantid, inserirP); guardar(stock, &quantid); } else { if(opcao == 2) listar(stock, &quantid); else { if(opcao == 0) printf("Saiu com sucesso."); else printf("A opção que inseriu não existe."); } } }while(opcao != 0); return 0; } void inserir(struct produto stock[], int *quant, int inserirP) { int i, j; i = *quant + inserirP; for(j = *quant; j < i; j++) { printf("Insira o código do produto: "); scanf("%d", &stock[*quant].codigo); fflush(stdin); printf("Insira o nome do produto: "); scanf("%[^\n]s", stock[*quant].nome); fflush(stdin); printf("Insira a marca do produto: "); scanf("%[^\n]s", stock[*quant].marca); fflush(stdin); printf("Insira o preço do produto: "); scanf("%f", &stock[*quant].preco); fflush(stdin); } } void guardar(struct produto stock[], int *quant) { int i = 0; FILE *filer; filer = fopen("stock.txt", "w+"); while(i < *quant) { fprintf(filer, "%d %s %s %2.f", stock[i].codigo, stock[i].nome, stock[i].marca, stock[i].preco); i++; } fclose(filer); } void listar(struct produto stock[], int *quant) { int i; for(i = 0; i < *quant; i++) { printf("Código: %d\n", stock[i].codigo); printf("Nome: %s\n", stock[i].nome); printf("Marca: %s\n", stock[i].marca); printf("Preço: %.2f\n", stock[i].preco); } } void ler(struct produto stock[], int *quant) { int camposLido = 0, i = 0; FILE* filler; filler = fopen("stock.txt", "a"); while ((camposLido = fscanf(filler, "%d %s %s %f", &stock[i].codigo, stock[i].nome, stock[i].marca, &stock[i].preco)) != EOF) { if (camposLido != 4) { fprintf(stderr, "Linha desformatada\n"); fscanf(filler, "%*[^\n]s"); fscanf(filler, "%*c"); } i++; } fclose(filler); } Depois ele fica assim e eu não percebo porquê.
  4. O programa agora não faz nada, ele abre pede o ficheiro e fecha.
  5. Eu estou a tentar fazer um programa com um arquivo de texto (.txt) mas cada que ele tem de escrever (Disciplina: (nome da disciplina), mas cada vez faço run ele em vez de escrever por exemplo (Disciplina: Arquitetura de Computadores), ele escrever (Disciplina: Aquitetura (enter) Disciplina: de (enter) Disciplina: Computadores) alguém me pode ajudar?

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...