ft_isprint

 A função isprint() checa se o caractere passado é printável. Um caractere printável é um caractere que não é um caractere de controle.

Um caractere de controle é um número pertencente a um conjunto de caracteres que não representa por si só um símbolo da escrita, por exemplo o backspace que é usado para apagar o último caractere impresso ou para sobre-escrevê-lo.

Declaração

int isprint(int c);

Parâmetros

  • c – Caractere a ser checado.

Retorno

Essa função retorna um valor não nulo (verdadeiro) se c for um caractere printável, caso contrário retorna 0 (falso).

Exemplo

#include <stdio.h>
#include <ctype.h>

int main () {
   int var1 = 'k';
   int var2 = '8';
   int var3 = '\t';
   int var4 = ' ';
    
   if( isprint(var1) ) {
      printf("var1 = |%c| pode ser printado\n", var1 );
   } else {
      printf("var1 = |%c| não pode ser printado\n", var1 );
   }
   
   if( isprint(var2) ) {
      printf("var2 = |%c| pode ser printado\n", var2 );
   } else {
      printf("var2 = |%c| não pode ser printado\n", var2 );
   }
   
   if( isprint(var3) ) {
      printf("var3 = |%c| pode ser printado\n", var3 );
   } else {
      printf("var3 = |%c| não pode ser printado\n", var3 );
   }
   
   if( isprint(var4) ) {
      printf("var4 = |%c| pode ser printado\n", var4 );
   } else {
      printf("var4 = |%c| não pode ser printado\n", var4 );
   }
   
   return(0);
} 

Saída:

var1 = |k| pode ser printado                                                  
var2 = |8| pode ser printado                                                  
var3 = |        | não pode ser printado                                         
var4 = | | pode ser printado

Codificando a função

Ao olhar a tabela ASCII vemos que o primeiro caractere printável é o espaço (32) e o último é o til (126). Dessa forma basta verificar se o caractere ‘c’ passado no parâmetro é menor que o espaço ou maior que o til.

int	ft_isprint(int c)
{
	if (c < ' ' || c > '~') //se for menor que espaço ou maior que til
		return (0); // retorna 0 (falso)
	return (1); //senão entrar no if é verdadeiro
}

Referências

https://www.tutorialspoint.com/c_standard_library/c_function_isprint.htm

https://linux.die.net/man/3/isprint

https://pt.wikipedia.org/wiki/Caractere_de_controle

Deixe um comentário