Ir ao conteúdo
  • Cadastre-se
imSkillz

C Função Atoi "SOMENTE NUMEROS" não consigo

Recommended Posts

Bom preciso usar a função atoi para retornar SOMENTE NUMEROS segue o código:


	#include<stdio.h>
	#include<stdlib.h>

	int main ()
	{
		setbuf(stdout, NULL);
		int i;
		char buffer [256];

		printf ("Digite numero: ");
		fgets (buffer, 256, stdin);

		i = atoi (buffer);
		printf ("Numero: %d.",i);

		return 0;
	}

Se eu digitar 42, retorna 42 (Certo).

Se eu digitar 42b, retorna 42 (Errado, precisaria que voltasse como errado "Valor não numérico")

Agora se eu digitar uma letra antes por exemplo, b42 (Retorna 0, que no caso seria invalido e estaria CERTO).

 

Ai eu precisaria implementar ela no seguinte algoritmo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
	setbuf(stdout, NULL);

	char string[30];
	int i, valor;

	printf("Digite valor:");
	gets(string);
	fflush(stdin);

		valor = strlen(string);

			printf("Valor invertido:");
			for(i = valor -1; i >= 0 ; i--)
			{
				printf("%c", string[i]);
			}

	return EXIT_SUCCESS;
}

Que também tentei e sem sucesso :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

@imSkillz Olá!

― Eu entendi que, considera-se uma é entrada adequada se a string digitada tem somente caracteres numéricos, ao mesmo que algum string que tem caracteres fora do intervalo [0 ... 9] é uma string que se considera inadequada. Assim sendo preciso determinar a existe outra coisa não numérica.

 

eint

#include <stdbool.h>
bool eint(char const str[static 1])
{
    int c= 0;
    
    /* Primeiro, verifica-se o sinal aritmético, depois ... */
    if(str[c] == '+' || '-' == str[c]){ ++c; }
    
    /* o loop no arranjo (string) em busca de caracteres não numéricos ... */
    while(str[c] <= '9' && '0' <= str[c]) ++c;
    
    /* se o último caractere na string é diferente de '\0' é porque a string
    é do tipo inadequado, e a função retornará false. */
    return ! str[c];
}

Ok!

 

UPDATE:

* nome da string para   str

* a função atoi não faz sentido para problema em si e nem para função   eint   foi retirada.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×