Conteúdo do Curso
Noções Básicas de C
Noções Básicas de C
Char e string
No encerramento da nossa última lição, insinuamos 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 caractere único. Assim, o texto "c<>definity"
seria representado como:
Você deve ter percebido que o texto "c<>definity"
contém apenas 11 caracteres, mas o array tem 12 elementos.
Nota
Pense nisso: toda 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; trata-se de um caractere único e não imprimível, semelhante a \n
. No gráfico ASCII, este caractere tem o código 0.
Uma célula adicional do array é reservada para este caractere.
Sempre que estiver trabalhando com texto, certifique-se de que o array que contém o texto tenha um elemento a mais do que o comprimento real do texto.
Nota
Lembre-se, até mesmo um espaço é um caractere e ele necessita do seu próprio lugar 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 se compõe de caracteres. Lembre-se sempre de finalizar uma string com \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 caractere representando o caractere com código ASCII 0 (NULL
). O segundo é um 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 strings
Em C, quando você deseja exibir strings (arrays de valores char), você usa o especificador %s
. Esse especificador orienta a função printf()
sobre que tipo de informação ela deve esperar. Ao usar %s
, informamos à função printf()
que ela estará recebendo 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 observar um exemplo ilustrativo:
main
#include <stdio.h> int main() { char str[] = "c<>definity"; printf("%c\n", str[0] ); return 0; }
Curiosamente, ao utilizar o índice, acessamos o elemento inicial do array. Essencialmente, no seu núcleo, as strings são apenas arrays do tipo char.
Graças às propriedades dos arrays, 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!