Strings em C: Como Arrays de Caracteres Terminado em Null Funcionam
Strings são na verdade arrays unidimensionais de caracteres terminados por um caractere null '\0'. Assim, uma string terminada em null contém os caracteres que compõem a string seguidos por um null.
A seguinte declaração e inicialização criam uma string consistindo da palavra "Hello". Para manter o caractere null no final do array, o tamanho do array de caracteres contendo a string é um a mais que o número de caracteres na palavra "Hello".
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Se você seguir a regra de inicialização de array, pode escrever a instrução acima da seguinte forma:
char greeting[] = "Hello";
Segue a apresentação de memória da string definida acima em C/C++:
Na verdade, você não coloca o caractere null no final de uma constante de string. O compilador C coloca automaticamente o '\0' no final da string quando inicializa o array. Vamos tentar imprimir a string mencionada acima:
Live Demo#include <stdio.h>
int main() {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Mensagem de saudação: %s\n", greeting);
return 0;
}
Quando o código acima é compilado e executado, produz o seguinte resultado:
Mensagem de saudação: Hello
C suporta uma ampla gama de funções que manipulam strings terminadas em null:
| Sr.No. | Função & Propósito |
|---|---|
| 1 | strcpy(s1, s2); Copia a string s2 para a string s1. |
| 2 | strcat(s1, s2); Concatena a string s2 no final da string s1. |
| 3 | strlen(s1); Retorna o comprimento da string s1. |
| 4 | strcmp(s1, s2); Retorna 0 se s1 e s2 são iguais; menor que 0 se s1<s2; maior que 0 se s1>s2. |
| 5 | strchr(s1, ch); Retorna um ponteiro para a primeira ocorrência do caractere ch na string s1. |
| 6 | strstr(s1, s2); Retorna um ponteiro para a primeira ocorrência da string s2 na string s1. |
O exemplo a seguir usa algumas das funções mencionadas acima:
Live Demo#include <stdio.h>
#include <string.h>
int main() {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len;
/* copia str1 para str3 */
strcpy(str3, str1);
printf("strcpy(str3, str1) : %s\n", str3);
/* concatena str1 e str2 */
strcat(str1, str2);
printf("strcat(str1, str2): %s\n", str1);
/* comprimento total de str1 após concatenação */
len = strlen(str1);
printf("strlen(str1) : %d\n", len);
return 0;
}
Quando o código acima é compilado e executado, produz o seguinte resultado:
strcpy(str3, str1) : Hello strcat(str1, str2): HelloWorld strlen(str1) : 10
Linguagem C
- Dominando Strings em C#: Fundamentos, Operações e Técnicas Avançadas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Representações String em Enums Java
- Criando Listas de Strings em VHDL: Boas Práticas e Exemplo
- Dominando Funções de String em C++: strcpy, strcat, strlen, strcmp – Exemplos Práticos
- Strings em C Facilitadas: Declaração, Entrada, Saída e Funções da Biblioteca
- Entendendo Java String.charAt(): Sintaxe, Tipo de Retorno, Exceções e Exemplo Prático
- Dominando Java String.endsWith(): Como Verificar Sufixos de String com Exemplos
- Domine Operações com Strings em Python: Replace, Join, Split, Reverse e Conversão de Case
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos