int isalnum (int c)
OBSERVAÇÃO: o valor retornado, quando diferente de zero, não é especificado no padrão da linguagem e, portanto, pode depender de qual compilador e versão são usados, bem como do sistema operacional.
Recebe: um argumento inteiro, cujo valor seja um caractere (ou seja, possa ser representado como um unsigned char) ou o valor EOF.
Retorna: um valor diferente de zero caso o caractere seja alfanumérico ou 0 caso contrário.
//EXEMPLO isalnum()
#include <stdio.h>
#include <ctype.h>
int main() {
char c;
int resultado;
c = '1';
resultado = isalnum(c);
printf("resultado: %d\n", resultado);
c = 'G';
resultado = isalnum(c);
printf("resultado: %d\n", resultado);
c = 'k';
resultado = isalnum(c);
printf("resultado: %d\n", resultado);
c = '+';
resultado = isalnum(c);
printf("resultado: %d\n", resultado);
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
resultado: 1
resultado: 1
resultado: 1
resultado: 0
int isalpha(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isalpha() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: 1 caso seja uma letra do alfabeto maiúscula, 2 caso seja minúscula, 0 caso não esteja no alfabeto.
OBSERVAÇÃO: dependendo da IDE que você está usando, o valor de retorno para o caractere alfanumérico, tanto maiúsculo quanto minúsculo, pode ser diferente de 1, entretanto, sempre será zero caso não seja alfanumérico.
//EXEMPLO isalpha()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c = 'I';
printf("letra maiuscula presente no alfabeto retorna: %d\n", isalpha(c));
c = 'i';
printf("letra minuscula presente no alfabeto retorna: %d\n", isalpha(c));
c=',';
printf("caractere não presente no alfabeto retorna: %d\n", isalpha(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
letra maiuscula presente no alfabeto retorna: 1
letra minuscula presente no alfabeto retorna: 2
caractere não presente no alfabeto retorna: 0
int iscntrl(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que iscntrl() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso seja um caractere de controle (códigos de 0 a 31 na tabela ASCII) ou 0 caso contrário.
//EXEMPLO iscntrl()
#include <stdio.h>
#include <ctype.h>
int main() {
char c;
int resultado;
c = '1';
resultado = iscntrl(c);
printf("resultado: %d\n", resultado);
c = 'G';
resultado = iscntrl(c);
printf("resultado: %d\n", resultado);
c = 'k';
resultado = iscntrl(c);
printf("resultado: %d\n", resultado);
c = '\n';
resultado = iscntrl(c);
printf("resultado: %d\n", resultado);
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
resultado: 0
resultado: 0
resultado: 0
resultado: 1
int isdigit(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isdigit() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero quando o caractere recebido é um dígito de 0 a 9 ou 0 caso contrário.
//EXEMPLO isdigit()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c='7';
printf("caractere numerico: %d\n", isdigit(c));
c='=';
printf("caractere nao numerico: %d", isdigit(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
caractere numerico: 1
caractere nao numerico: 0
int isgraph(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isgraph() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso seja um caractere que possa ser imprimido (exceto o espaço) ou 0 caso contrário.
//EXEMPLO isgraph()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
int resultado;
c = '!';
resultado = isgraph(c);
printf("resultado = %d\n", resultado);
c = ' ';
resultado = isgraph(c);
printf("resultado = %d\n", resultado);
c = '9';
resultado = isgraph(c);
printf("resultado = %d\n", resultado);
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
resultado = 1
resultado = 0
resultado = 1
int islower(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que islower () receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso o caractere seja uma letra minúscula ou zero caso contrário.
//EXEMPLO islower()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c='i'; //letra minúscula
printf("%d\n", islower(c));
c='S';
printf("%d\n", islower(c));
c='*';
printf("%d\n", islower(c));
c='p'; //letra minúscula
printf("%d\n", islower(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
1
0
0
1
int isprint(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isprint() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso seja um caractere imprimível (incluindo o espaço) ou zero caso contrário.
Os caracteres imprimíveis são: ! ” # $ % & ’ ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; = < > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] _ a b c d e f g h i j k l m n o p q r s t u v w x y z { } ~
//EXEMPLO isprint()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c=' '; //imprimível
printf("%d\n", isprint(c));
c='S'; //imprimível
printf("%d\n", isprint(c));
c='*'; //imprimível
printf("%d\n", isprint(c));
c='\n'; //não imprimível
printf("%d\n", isprint(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
1
1
1
0
int ispunct(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que ispunct() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso seja um sinal de pontuação (qualquer caractere imprimível que não seja espaço ou alfanumérico) ou 0 caso contrário.
//EXEMPLO ispunct()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c=' '; //não é pontuação
printf("%d\n", ispunct(c));
c='S'; //não é pontuação
printf("%d\n", ispunct(c));
c='*'; //é pontuação
printf("%d\n", ispunct(c));
c='.'; //é pontuação
printf("%d\n", ispunct(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
0
0
1
1
int isspace(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isspace() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso seja um espaço ou um caractere de mudança de linha (‘\n’), de retorno de carro (‘\r’), de mudança de página (‘\f’), ou de tabulações horizontal (‘\t’) ou vertical (‘\v’) ou 0 caso contrário.
//EXEMPLO isspace()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c=' ';
printf("%d\n", isspace(c));
c='i';
printf("%d\n", isspace(c));
c='\n';
printf("%d\n", isspace(c));
c='\r';
printf("%d\n", isspace(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
1
0
1
1
int isupper(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isupper() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de um caso seja uma letra maiúscula (A a Z) ou 0 caso contrário.
//EXEMPLO isupper()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c = 'G'; //maiúsculo
printf("%d\n", isupper(c));
c = 'i';
printf("%d\n", isupper(c));
c = '\n';
printf("%d\n", isupper(c));
c = 'M'; //maiúsculo
printf("%d\n", isupper(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
1
0
0
1
int isxdigit(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que isxdigit() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: um valor diferente de zero caso o caractere seja um dígito de um número hexadecimal ou 0 caso contrário.
Caracteres hexadecimais: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
//EXEMPLO isxdigit()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c = 'A'; //hexadecimal
printf("%d\n", isxdigit(c));
c = 'f'; //hexadecimal
printf("%d\n", isxdigit(c));
c = 'P'; // não hexadecimal
printf("%d\n", isxdigit(c));
c = ' '; //não hexadecimal
printf("%d\n", isxdigit(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
1
1
0
0
int tolower(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que tolower() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
Retorna: caso o argumento da função seja uma letra maiúscula, retorna sua versão em letra minúscula; caso contrário o próprio argumento é retornado sem modificações.
//EXEMPLO tolower()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c='A'; //maiúsculo
printf("%c\n", tolower(c));
c='M'; //maiúsculo
printf("%c\n", tolower(c));
c='/'; // não maiúsculo
printf("%c\n", tolower(c));
c='f'; //não maiúsculo
printf("%c\n", tolower(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
a
m
/
f
int toupper(int c)
Recebe: um único argumento (caractere) que será convertido para inteiro. Mesmo que toupper() receba um inteiro como argumento, o caractere é passado para a função. Internamente, o caractere é convertido em seu valor ASCII para a verificação.
OBSERVAÇÃO: se o argumento for char, a chamada deve usar typecast: toupper((unsigned char)c), por conta da conversão de signed char para int (problema com o sinal).
Retorna: caso o argumento da função seja uma letra minúscula, retorna sua versão em maiúscula; caso contrário o próprio argumento é retornado sem modificações.
//EXEMPLO toupper()
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
c='r'; //minúsculo
printf("%c\n", toupper(c));
c='i'; //minúsculo
printf("%c\n", toupper(c));
c='*'; //não minúsculo
printf("%c\n", toupper(c));
c='G'; //não minúsculo
printf("%c\n", toupper(c));
return 0;
}
>clang-7 -pthread -lm -o main main.c
>./main
R
I
*
G