Conteúdo do Curso
Fundamentos de C
Fundamentos de C
Char e String
Na conclusão da nossa última lição, mencionamos a ideia de usar arrays para manipular texto.
Em C, não há um tipo de dado específico projetado exclusivamente para strings (ou texto). Em vez disso, utilizamos um array do tipo char, onde cada elemento do array contém um único caractere. Assim, o texto "c<>definity"
seria representado como:
Você pode ter percebido que o texto "c<>definity"
contém apenas 11 caracteres, mas o array possui 12 elementos.
Nota
Pense nisso: cada palavra que você conhece é apenas uma combinação de letras.
O caractere \0
Este caractere, \0
, sinaliza o fim de uma string em C. Não o confunda com o número zero; é um caractere único, não imprimível, semelhante a \n
. Na tabela ASCII, este caractere tem o código 0.
Uma célula adicional do array é reservada para este caractere.
Sempre que você estiver trabalhando com texto, certifique-se de que o array que contém o texto seja dimensionado com um elemento a mais do que o comprimento real do texto.
Nota
Lembre-se, até mesmo um espaço é um caractere e requer seu próprio espaço no array. Por exemplo:
char array[10] = { 'u','s','e',' ','s','p','a','c','e','\0' }
.
Char vs. String
É crucial reconhecer que 'x'
e "x"
não são a mesma coisa.
Uma string consiste em caracteres. Sempre lembre-se de terminar uma string com o caractere \0
.
'x'
é simplesmente uma constante de caractere do tipo char;"x"
é uma string, um array de valores char, ou, neste caso, {'x', '\0'}.
Nota
Certifique-se de não confundir
'\0'
,'0'
e"0"
. O primeiro é um literal de caractere que representa o caractere com código ASCII 0 (NULL
). O segundo é um literal de caractere para o dígito 0, com um código ASCII de 48. O terceiro é uma string consistindo de dois caracteres: o dígito 0 e o terminador de string,\0
.
Saída de String
Em C, quando você quer exibir strings (arrays de valores char), você usa o especificador %s
. Este especificador orienta a função printf()
sobre que tipo de informação ela deve esperar. Ao usar %s
, informamos à função printf()
que ela receberá uma string.
main
#include <stdio.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%s\n", array); // use %s format specifiers return 0; }
A linguagem C inclui uma biblioteca padrão para manipulação de strings, <string.h>
.
Dentro desta biblioteca, há uma função que conta o número de caracteres em uma string:
main
#include <stdio.h> #include <string.h> int main() { char array[] = { 'c','<','>','d','e','f','i','n','i','t','y','\0' }; printf("%d\n", strlen(array)); return 0; }
Vamos mergulhar em um exemplo ilustrativo:
main
#include <stdio.h> int main() { char str[] = "c<>definity"; printf("%c\n", str[0] ); return 0; }
Interessantemente, ao aproveitar o índice, acessamos o elemento inicial do array. Essencialmente, em sua essência, strings são apenas arrays do tipo char.
Graças às propriedades do array, você pode alterar elementos específicos da string usando índices:
Main
#include <stdio.h> int main() { char str[] = "c<>definity"; str[5] = '#'; // change the sixth character `f` to `#` printf("%s\n", str); return 0; }
Obrigado pelo seu feedback!