Enviado em 31/05/2010 - 15:54h
Boa tarde pessoal...
Estou tendo um problema para fazer o tratamento de erros de um exercício da faculdade.
Preciso impedir que caracteres sejam digitados em campos inteiros ou real.
Pensei em usar isdigit da ctype.h. mas não tenho muito conhecimento sobre o seu uso.
Se alguem puder me dizer o que está errado nessa parte do código eu agradeço.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
int quant_prod;
do
{
do
{
system("clear");
printf(" || Controle de Estoque ||\n\n");
printf("Digite a quantidade de produtos a ser cadastrado:\n");
scanf("%d", &quant_prod);
if (isdigit(quant_prod))
{
printf("Apenas numeros podem ser digitados.\n");
printf("Precione <ENTER> para continuar.\n");
system("read b");
}
if (quant_prod <= 0)
{
printf("Opcao Invalida...\n");
printf("Digite um numero maior que 0.\n");
printf("Precione <ENTER> para continuar.\n");
system("read b");
}
} while (quant_prod < 1 || isdigit(quant_prod));
}
}
O erro que aparece é: "Falha de Segmentação" e o programa é encerrado.
Antes, tinha tentado o mesmo código com !isdigit(quant_prod), pois imaginei que essa função retornasse verdadeiro quando o campo fosse numérico.
Mas o programa assionava o primeiro if sempre que um número éra digitado e depois dava problema.
Ao incluir essa biblioteca, não é necessário acrescentar nada a compilação, correto???
gcc main.c -o controle
Agradeço muito qualquer ajuda que possa ser oferecida.
Muito obrigado.
Estou tendo um problema para fazer o tratamento de erros de um exercício da faculdade.
Preciso impedir que caracteres sejam digitados em campos inteiros ou real.
Pensei em usar isdigit da ctype.h. mas não tenho muito conhecimento sobre o seu uso.
Se alguem puder me dizer o que está errado nessa parte do código eu agradeço.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
int quant_prod;
do
{
do
{
system("clear");
printf(" || Controle de Estoque ||\n\n");
printf("Digite a quantidade de produtos a ser cadastrado:\n");
scanf("%d", &quant_prod);
if (isdigit(quant_prod))
{
printf("Apenas numeros podem ser digitados.\n");
printf("Precione <ENTER> para continuar.\n");
system("read b");
}
if (quant_prod <= 0)
{
printf("Opcao Invalida...\n");
printf("Digite um numero maior que 0.\n");
printf("Precione <ENTER> para continuar.\n");
system("read b");
}
} while (quant_prod < 1 || isdigit(quant_prod));
}
}
O erro que aparece é: "Falha de Segmentação" e o programa é encerrado.
Antes, tinha tentado o mesmo código com !isdigit(quant_prod), pois imaginei que essa função retornasse verdadeiro quando o campo fosse numérico.
Mas o programa assionava o primeiro if sempre que um número éra digitado e depois dava problema.
Ao incluir essa biblioteca, não é necessário acrescentar nada a compilação, correto???
gcc main.c -o controle
Agradeço muito qualquer ajuda que possa ser oferecida.
Muito obrigado.