codigo de programa que esta bugando nao consego resolver

1. codigo de programa que esta bugando nao consego resolver

Paulo Cesar
paulocesar.bras

(usa Ubuntu)

Enviado em 21/11/2009 - 22:00h

olha galera estou tentando construir um programa em c que salva em arquivos porem ele executa mas nao faz as funcoes desejada faz apenas a opcao 1 e 5 e buga no resto alguem pode me ajudar ??

gostaria de conseguir fazer ele rodar em linux mas tem umas biblioteca que eu nao consigo sou iniciante tenho Ubunto 9.10 e dev C++ que nao presta....
segue o codigo

// programa para controle de estoque 1.00.12
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
// #include <unistd.h>


struct produto{
// float valor;
int num;
//char m;
char nome[50];
char marca [20];

}P;
int Cadproduto();

FILE *arquivo;


/*__________________ Pesquisa de produtos _________________ */

int Buscaproduto(){
int n;
printf ("digite o inscricao do produto: ");
scanf ("%d",&n);
fread(&P,sizeof(P),1,arquivo);
while(!feof(arquivo)){
if(P.num == n){
fseek(arquivo,sizeof(P),SEEK_CUR);
return 1;
}
fread(&P,sizeof(P),1,arquivo);
}
return 0;
}
//////////////////////////////////
/* __________________ Cadastro de produtos _________________ */


int Cadproduto() {
int r;
char m;
system("cls");
arquivo = fopen("produto.txt","rw"); //abre os arquivos
if(arquivo == NULL)
{
printf("Erro ao abrir arquivo\n");
return r;
}
printf("\n\n\nInscricao do produto: ");
scanf("%d",&P.num);
if(Buscaproduto(P.num) == 0)
{
printf("\nNome: ");
fflush(stdin);
gets(P.nome);

printf("\nmarca: ");
gets(P.marca);
fflush(stdin);
fwrite(&P,sizeof(P),1,arquivo);
getchar();
}
else
printf("\nJah existe Produto Cadastrado com esse numero de Inscricao!\n");
printf("deseja continuar \n\n");
fclose(arquivo);//fecha arquivo
}

/*__________________ Listar produtos cadastrados _________________ */

void Listarproduto(){
int i=0;
arquivo = fopen("produto.txt","a+b");
if(arquivo == NULL){
printf("\nErro ao abrir arquivo\n");
return ;
}
fread(&P,sizeof(P),1,arquivo);
printf("\n\n\nRelacao de produtos:\n\n\n");
while(!feof(arquivo)){
i++;
printf("Inscricao: %d Nome: %s marca: %s \n\n",P.num,P.nome,P.marca);
fread(&P,sizeof(P),1,arquivo);
if(feof(arquivo) || (i == 30))
break;
system("PAUSE");
getchar();
getchar();
}

fclose(arquivo);
}

/* __________________ Exclui produtos _________________ */

void Excluiproduto() {
int num,i;
arquivo = fopen("produto.txt","r+b");
if(arquivo == NULL)
{
printf("Erro ao abrir arquivo\n");
return;
}
P.num = 1;
fwrite(&P,sizeof(P),1,arquivo);
printf("digite inscricao do produto a ser excluido:\n");
scanf("%d",&P.num);
if (Buscaproduto(P.num)==1){
fread(&P,sizeof(P),1,arquivo);
printf("\n\n\nRelacao de produtos:\n\n\n");
while(!feof(arquivo)){
i++;
printf("Inscricao: %d Nome: %s marca: %s \n\n",P.num,P.nome,P.marca);
fread(&P,sizeof(P),1,arquivo);
if(feof(arquivo) || (i == 20))
printf("\nProduto excluido com sucesso!\n");

getchar();
fclose(arquivo); }

}
}
void help(){
printf("____________________________\n");
printf("Contato para ajuda \n");
printf ("Paulo Cesar B Santos \n");
printf(" paulocesar.bras@gmail.com \n");
printf(" Cel 61 8609-6191\n");
printf("____________________________\n");
printf("\n");
printf("\t\t OU \n");
printf("____________________________\n");
printf ("Mayara Sales \n");
printf(" rayarasales@hotmail.com \n");
printf(" Cel 61 8503-0848\n");
printf("____________________________\n");
}

main() {

int op;

do{
printf("Escolha uma das opcoes abaixo: \n");
printf("\t 1 - Cadastro de Produtos\n");
printf("\t 2 - Listar Produtos\n");
printf("\t 3 - Pesquisar Produtos\n");
printf("\t 4 - Excluir Produtos\n");
printf("\t 5 -ajuda \n");
printf("\t 0 - Sair do Sistema\n");
printf("Digite a opcao: ");
scanf("%d",&op);

switch(op) {

case 1:Cadproduto();break;
case 2:Listarproduto();break;
case 3:Buscaproduto();break;
case 4:Excluiproduto();break;
case 5: help();break;
case 0:
printf("****saindo ****");
getchar();exit;
break;

default:
printf ("Opcao Invalida!! Digite uma das opcoes que esta no menu principal");
}

} while((op >= 0) && (op <=5));
}



  


2. Re: codigo de programa que esta bugando nao consego resolver

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/11/2009 - 22:33h

experimenta compilar com o g++

acho q te respondi noutro topico q o dev c++ tem umas peculiaridaes... vai numa coisa mais padrao... ele deve usar libs nao std... vai no site da oreilly la tem mto livro online de linguagens, etc. quem sabe vc nao acha algo bom la?


3. Re: codigo de programa que esta bugando nao consego resolver

Carlos Edinazio Araujo
carlos.e.a

(usa Ubuntu)

Enviado em 23/11/2009 - 19:40h

Cara, fala qual o compilador que voce ta utilizando que ajuda. Dependendo do compilador(gcc por exemplo) voce teria que retirar essa conio.h ai porque ela nao é padrao...outra coisa, tenta colocar esse codigo em outro lugar,tipo num txt e mandar o link, porque corrigir codigo sem estar identado é muito [*****]. E outra coisa: NUNCA use a funcao gets. Ela é muito perigosa. Prefira usar fgets.
Por fim, olhando so por cima seu codigo, deu pra perceber, alem do uso da conio.h(que acredito que nao seja usada em nenhum compilador do linux, pois é "biblioteca de windows"), tem o "cls" que deve ser trocado por "clear"...e tem um erro um pouco "grave", que é a sua funcao Buscaproduto originalmente nao ter parametros, mas na funcao Cadproduto e na funcao Excluiproduto ela esta com parametro...o que nao faz muito sentido. Isso foi o que vi olhando por cima.Corrije primeiro esses erros e volta a postar. Qualquer coisa estamos ai!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts