dafloria
(usa Ubuntu)
Enviado em 01/06/2010 - 12:14h
Muito obrigado pela ajuda gente...
Ontem não pude mais acessar a internet e depois de horas quebrando a cabeça, acabei montando uma function para resolver o problema (como ccarrara mencionol, e utilizando o atoi() e atof()).
Mas mesmo assim agradeço muito pela ajuda de vocês.
E apesar de eu não ser muito bom em C, se eu puder ajudar, podem contar comigo.
Segue as duas funções (para int e float):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float teste_float()
{
char a[20];
int i, sair, cont;
float result;
do
{
cont = 0;
sair = 0;
i = 0;
scanf("%s", a);
do
{
if (a[i] == 46)
{
cont++;
}
if (cont == 2)
{
printf("\nO .(ponto) so deve ser utilizado uma vez, na separacao das casas decimais.\n");
printf("Precione <ENTER> para continuar.\n");
system("read b");
system("clear");
printf("Digite novamente:\n");
sair = 1;
}
if ((a[i] != 46 && a[0] != 45) && (a[i] < 48 || a[i] > 57))
{
printf("\nNao digite caracteres dentro do campo numerico.\n");
printf("Precione <ENTER> para continuar\n");
system("read b");
system("clear");
printf("Digite novamente:\n");
sair = 1;
}
i++;
} while (i < strlen(a) && sair != 1);
} while (sair != 0);
result = atof(a);
return result;
}
int teste_int()
{
char a[20];
int i, sair, result;
do
{
sair = 0;
i = 0;
scanf("%s", a);
do
{
if ((a[0] != 45) && (a[i] < 48 || a[i] > 57))
{
printf("\nNao digite caracteres dentro do campo numerico.\n");
printf("Precione <ENTER> para continuar\n");
system("read b");
system("clear");
printf("Digite novamente:\n");
sair = 1;
}
i++;
} while (i < strlen(a) && sair != 1);
} while (sair != 0);
result = atoi(a);
return result;
}
Essas funções já resolveram meu problema.
Mais uma vez, muito obrigado aos que se preocuparam.