Jump to content

Recommended Posts

Posted

Bom dia,

estou com um problema.

É o seguinte estou a tentar inserir um numero de telemovel válido, mas são preciso pelo menos dois if's, o primeiro para ver se é digito ou numero, mas o problema e que se eu inserir primeiro um numero e depois letras ele aceita, e o outro problema e que no strlen tem de ter 9 caracteres, mas aí ele aceita qualquer letra, se alguem me poder dar umas luzes ou uns tópicos, para desenvolver esta parte obrigado.

int main(int argc, char *argv[]){
 char c, str[9];
 printf ("Insira o numero de telemovel: ");
 scanf("%s",&c);
 if(isdigit(c)!=0){
   printf ("Insira o numero de telemovel: ");
   scanf("%s",&str);
   if(strlen(str)==9){
     printf ("O numero e %s",str);
   }else{
     printf("erro");
   }
 }else{
   printf("erro");
 }
return(0);
}

Só falta saber como inserir os numeros válidos.

Obrigado

Posted (edited)

Boas!

tens que fazer um ciclo for que percorra a string e verifique em cada posição se é um digito ou uma letra.

Edited by AJBM
Posted

Primeiro que tudo: usa fgets() para obter input interactivo dum utilizador.

Usar scanf() pode nao ter a seguranca necessaria além de ocasionar erros com ENTERs e espaços em branco.

Depois de teres uma string válida (obtidacom fgets()), verifica cada elemento isoladamente com isdigit(). Alem disso deves verificar o numero na globalidade: há combinações de digitos que nao fazem numeros de telefone, por exemplo: 237<QUALQUERCOISA>

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

ja resolvi o problema só existe outro é que eu estou a por os valores para um vetor de inteiros e como o isdigit so funciona com char, gostaria de saber se existe alguma maneira de transformar um inteiro num char passar o valor 9 por exemplo que esta na var1, para a var2 que é um char.

Posted

transformar um inteiro num char

char c;
int i = 5;

// método 1
c = '0' + i;

// método 2
fprintf(&c, "%d", i);

// metodo 3
itoa(i, &c, 10);

nota que isto é só para dígitos, para números com mais de um dígito, tens de ter uma string e usar o o método 2 ou o método 3

IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.