vc colocando %d ele só vai ler numero creio eu se vc digitar uma letra gerará um erro.
R
rsaforuns
Não gera.
Já rodei o programa ele recebe letras e números.
E
enantiomero
Atenção, não sei se no C que você está usando existe o método strtoul.
#include <stdio.h>#include <stdlib.h>#include <string.h>intisNumeric(constchar*str){char*stop=0;strtoul(str,&stop,10);return(stop-str==strlen(str));}intmain(intargc,char*argv[]){charstrIdade[20];intok=0;intidade;do{printf("Entre com a idade: ");gets(strIdade);if(!isNumeric(strIdade)){fprintf(stderr,"Por favor, entre com um valor numérico.\n");}else{idade=atoi(strIdade);ok=1;}}while(!ok);printf("O valor entrado foi: %d\n",idade);system("pause");return0;}
J
java_es_a_lei
compara a entrada com numeros de 0 a 9 e se não for igual nenhum é porque é um caracter
esse é um modo bem simples
E
enantiomero
scanf ("%d") tem o seguinte comportamento: ele vai tentar procurar, nas coisas que você digitou, algo que se pareça com um número. Eu realmente não gosto muito de scanf porque ele é meio “mané” mesmo.
Outra forma de fazer que me veio à cabeça:
#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(intargc,char*argv[]){charstrIdade[20];intok=0;intidade;while(1){printf("Entre com a idade: ");gets(strIdade);if(sscanf(strIdade,"%d",&idade)!=1){fprintf(stderr,"Por favor, entre com um valor numérico.\n");}else{break;}};printf("O valor entrado foi: %d\n",idade);system("pause");return0;}
Entretanto, dessa maneira, se você entrar com a string “7cabecas”, por exemplo, ele aceita o valor 7.
M
MaikoID
É não tem como você manda fazer isso, por que um caracter lido como inteiro vira um numero, o que você pode fazer é testar um scanf num while e se não for número ele apenas apaga o que foi escrito e fica esperando outro input.