Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Identificar alfanumérico
  2. Identificar alfabético
  3. Identificar dígito
  4. Identificar hexadecimal
  5. Identificar pontuação

Em algumas situações quando lidamos com strings na C, precisamos verificar se um caracter dentro uma string é um dígito, uma letra ou outros. Nessas situações, C nos fornece funções para verificar o tipo de um caracter.

Para trabalharmos com as funções mostradas a seguir, a biblioteca <ctype.h> que deve ser incluída.

Sintaxe
#include <ctype.h>

Para verificar se um caracter é alfanumérico, utilizamos a função isalnum. Com essa função podemos saber se um caractere pertence aos grupos A-Z, a-z e 0-9.

Sintaxe
int isalnum( int c );
Onde
c: caracter para verificar
Retorno
0 : c não é alfanumérico.
!= 0 : c é alfanumérico.
Exemplo 1
#include <string.h>

void main ()
{
  int i;
  char string[]="7x1!";
  
  long int tam = strlen(string);
  
  for(i=0 ;i < tam ; i++)
  {
    if(isalnum(string[i]))  
        printf("%c eh alfanumerico\n",string[i]);
    else
        printf("%c nao eh alfanumerico\n",string[i]);
  }
}
Saída
7 eh alfanumerico
x eh alfanumerico
1 eh alfanumerico
! nao eh alfanumerico

Para verificar se um caracter pertence ao alfabeto, utilizamos a função isalpha. Com essa função podemos saber se um caractere está contido entre A-Z, a-z.

Sintaxe
int isalpha( int c );
Onde
c: caracter para verificar
Retorno
0 : c não é alfabético.
!= 0 : c é alfabético.
Exemplo 2
#include <stdio.h>
#include <ctype.h>

void main ()
{
  int i;
  char string[]="1#s!e@n#h%a23";
  
  long int tam = strlen(string);
  
  for(i=0 ;i < tam ; i++)
  {
    if(isalpha(string[i]))  
        printf("%c eh letra\n",string[i]);
    else
        printf("%c nao eh letra\n",string[i]);
  }
}
Saída
s eh letra
! nao eh letra
e eh letra
@ nao eh letra
n eh letra
# nao eh letra
h eh letra
% nao eh letra
a eh letra
2 nao eh letra
3 nao eh letra

Para verificar se um caracter pertence ao grupo de dígitos, utilizamos a função isdigit. Com essa função podemos saber se um caractere está contido entre 0-9.

Sintaxe
int isdigit( int c );
Onde
c: caracter para verificar
Retorno
0 : c não é dígito.
!= 0 : c é dígito.
Exemplo 3
#include <stdio.h>
#include <ctype.h>

void main ()
{
  int i;
  char string[]="senha 123";
  
  long int tam = strlen(string);
  
  for(i=0 ;i < tam ; i++)
  {
    if(isdigit(string[i]))  
        printf("%c é digito\n",string[i]);
    else
        printf("%c não é digito\n",string[i]);
  }
}
Saída
s não é digito
e não é digito
n não é digito
h não é digito
a não é digito
  não é digito
1 é digito
2 é digito
3 é digito

Para verificar se um caracter pertence ao grupo de dígitos hexadecimais, utilizamos a função isxdigit. Com essa função podemos saber se um caractere possui dígitos entre 0-9 e A-F ou a-f.

Sintaxe
int isxdigit( int c );
Onde
c: caracter para verificar
Retorno
0 : c não é hexadecimal.
!= 0 : c é hexadecimal.
Exemplo 3
#include <stdio.h>
#include <ctype.h>

int main ()
{
  int i;
  char string[]="1 cafe por favor.";
  
  long int tam = strlen(string);
  
  for(i=0 ;i < tam ; i++)
  {
    if(isxdigit(string[i]))  
        printf("%c é hexa\n",string[i]);
    else
        printf("%c não é hexa\n",string[i]);
  }
}
Saída
1 é hexa
  não é hexa
c é hexa
a é hexa
f é hexa
e é hexa
  não é hexa
p não é hexa
o não é hexa
r não é hexa
  não é hexa
f é hexa
a é hexa
v não é hexa
o não é hexa
r não é hexa
. não é hexa

Para verificar se um caractere é pontuação, utilizamos a função ispunct. Com essa função podemos saber se um caractere está contido no grupo (!, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, } e ~ ).

Sintaxe
int ispunct( int c );
Onde
c: caracter para verificar
Retorno
0 : c não é pontuação.
!= 0 : c é pontuação.
Exemplo 3
#include <stdio.h>
#include <ctype.h>
#include <string.h>

int main ()
{
  int i;
  char string[]="1: Quem? Eu!.";
  
  long int tam = strlen(string);
  
  for(i=0 ;i < tam ; i++)
  {
    if(ispunct(string[i]))  
        printf("%c é pontuação\n",string[i]);
    else
        printf("%c não é pontuação\n",string[i]);
  }
}
Saída
1 não é pontuação
: é pontuação
  não é pontuação
Q não é pontuação
u não é pontuação
e não é pontuação
m não é pontuação
? é pontuação
  não é pontuação
E não é pontuação
u não é pontuação
! é pontuação
. é pontuação
  1. 11/03/2025 - revisão 3 - Adição de caracteres de pontuação
  2. 08/10/2024 - revisão 2 - Ajustes pontuais
  3. 28/09/2023 - revisão 1 - Correção em referências, erros gramaticais
  4. 19/05/2023 - versão inicial