Escreva uma única instrução que possibilite a execução das tarefas a seguir. Suponha que as variáveis c (que armazena um caractere), x, y e z sejam do tipo int, as variáveis d, e e f sejam do tipo double, a variável ptr seja do tipo char * e os arrays s1[100] e s2[100] sejam do tipo char.
Passo 1
E aí meus queridos!! Tudo bem com vocês??
Hoje vamos falar sobre algumas funções que podem fazer muita diferença na hora de programar! Bora lá??
m) Já pensou descobrir se uma variável possui caractere imprimível? Com a função isprint podemos descobrir. Essa função retorna se uma variável é imprimível ou não. E como já sabemos, podemos usar o operador condicional (? : ) para completar nossa questão.
Então poderemos resolver a questão da seguinte maneira:
printf( “ ‘c’ %scaractere imprimível\n”, c, isprint( c ) : “é um” : “não é um”);
Passo 2
n) Precisamos ler uma entrada em formato de string e transformá-la em double. Isso só será possível se usarmos a função sscanf(string, tipo, variáveis), sendo:
string – os valores que queremos em formato string.
Tipo – o tipo que queremos que seja transformado.
Variáveis – que vão receber os novos valores.
Então nossa questão ficaria assim:
sscanf( “1.27 10.3 9.432”, “%f%f%f”, &d, &e, &f );
Passo 3
o) Agora vamos entender um pouco sobre a função strcpy, sua sintaxe funciona da seguinte maneira: strcpy(string1, string2). Essa função copia o valor atribuído a string 2 para a string1.
Então nossa sintaxe dessa questão poderia ficar da seguinte maneira:
strcpy( s1, s2 );
Passo 4
p) E se quisermos saber qual a primeira ocorrência de uma string de acordo com qualquer caractere contido na segunda string? Podemos usar a função strpbrk(string1, string2).
Nossa questão, precisamos atribuir o resultado a um ponteiro, então ficará assim:
ptr = strpbrk( s1, s2 );
Passo 5
q) Agora precisamos comparar duas strings e ver se elas são iguais, maiores ou menores. Lembrando que o resultado sairá da seguinte forma:
Resultado
Resultado > 0 então indica que str2 é menor que str1.
Resultado = 0 então indica que str1 é igual a str2.
Então podemos resolver essa questão assim:
printf( “strcmp( s1, s2 ) = %d\n”, strcmp(s1, s2 ) );
Passo 6
r) Já vimos como atribuir a um ponteiro a última ocorrência de um caractere numa string, mas e se quisermos fazer da primeira ocorrência?
Podemos usar a seguinte função: strchr(string, caractere). Como precisamos atribuir ao ponteiro nossa questão ficaria dessa maneira:
ptr = strchr( s1, c );
Ufa... Acabamos por aqui!! Dê Ctrl+n no seu compilador e bora para o restante do exercício!!
Resposta
- printf( “ ‘c’ %scaractere imprimível\n”, c, isprint( c ) : “é um” : “não é um”);putchar( c );
- sscanf( “1.27 10.3 9.432”, “%f%f%f”, &d, &e, &f );
- strcpy( s1, s2 );
- ptr = strpbrk( s1, s2 );
- printf( “strcmp( s1, s2 ) = %d\n”, strcmp(s1, s2 ) );
- ptr = strchr( s1, c );