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

  1. Caracteres alfanuméricos
  2. Caracteres alfabéticos
  3. Caracteres numéricos
  4. Caracteres hexadecimais
  5. Caracteres de pontuação

Em algumas situações quando lidamos com strings em C, precisamos verificar se um caracter dentro é um dígito, uma letra ou outros. Nessa situaçõe, 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>
#include <stdio.h>
#include <ctype.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 o caractere está contido nos grupos de letras 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>
#include <string.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>
#include <string.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 está contido nos grupos de dígitos e letras 0-9 e A-F/a-f.

Sintaxe
int isxdigit( int c );
Onde
c: caracter para verificar
Retorno
0 : c não é hexadecimal.
!= 0 : c é hexadecimal.
Exemplo 4
#include <stdio.h>
#include <ctype.h>
#include <string.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 5
#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. 30/06/2026 - revisão 6 - Ajustes: pontuais
  2. 17/09/2025 - revisão 5 - Ajustes: includes em ex. 1,2,3 e 4
  3. 03/09/2025 - revisão 4 - Ajustes: pontuais e sintaxes
  4. 11/03/2025 - revisão 3 - Adição de caracteres de pontuação
  5. 08/10/2024 - revisão 2 - Ajustes pontuais
  6. 28/09/2023 - revisão 1 - Correção em referências, erros gramaticais
  7. 19/05/2023 - versão inicial