Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarar string
  2. Acessar/alterar elemento
  3. Percorrer string
  4. Copiar string
  5. Tamanho da string
  6. Parâmetro/argumento e retorno
  7. String multilinha

Nesta parte do tutorial vamos aprender as operações básicos envolvendo o tipo de dado derivado string. Vamos ver: declaração, atribuição, iteração e outros usos básicos.

Um introdução sobre esses tipos de dados já foram visto em C Tipos de Dados: String sendo a leitura recomendada.

O tipo de dado ponteiro pode ser visto em C: Ponteiro sendo a leitura recomendada.

Para a linguagem C, o tipo de dado string é uma cadeia de caracteres justapostos. Abaixo uma abstração da representação de uma string em um local de memória.

0 1 2 3 4 5 6
's' 't' 'r' 'i' 'n' 'g' '\0'

Para a declaração de um string em C, podemos utilizar um vetor do tipo char ou ponteiro para tipo char.

Sintaxe
1. char nome_string[<tamanho>] = {vetor_char,\'0'};
2. char nome_string[<tamanho>] = "string";
3. char *nome_var = "string"; 
Onde
vetor_char: vetor de caracteres separador por vírgula.
string: sequência de caracteres
<tamanho>: Tamanho da string. Não obrigatório se string for iniciada na declaração.
Descrição

Na declaração 1, temos a declaração de uma string mutável e precisamos informar o terminador de string '\0'.

Na declaração 2 temos a declaração de uma string mutável em que o terminador de string '\0' e adicionado automaticamente.

Na declaração 3 temos a declaração de uma string imutável/somente-leitura em que o terminador de string '\0' e adicionado automaticamente.

Exemplo 1
#include &stdio.h>

void main()
{
    char string1[] = {'s','t','r','i','n','g','1','\0'};
    char string2[] = "string2";
    char *string3 = "string3";
    
    printf("%s \n", string1);
    printf("%s \n", string2);
    printf("%s \n", string3);
}
Saída
string1 
string2 
string3

O acesso/alteração aos elementos de uma string mutável é feito utilizando o indexador [] que recebe um índice ou uma posição do elemento como argumento.

Sintaxe
nome_string[indice] = valor;
nome_var[indice];
Exemplo 2
#include <stdio.h>

void main()
{
    char string2[] = "string2";
    string2[0] = 'S';
    char *pnt = string2;
    pnt[6] = '3';
    printf("%s",string2);
}
Saída
String3

Quando temos conhecimento sobre o tamanho da string, podemos utilizar o comando for, por exemplo, para iterar sobre os elementos de uma string.

Exemplo 3
#include <stdio.h>

#include 

void main()
{
    char string2[] = "string2";

    int i;
    for(i = 0; i < 7; i++ )
        printf("%c", string2[i]);
}
Saída
string2

Caso o tamanho da string não seja conhecido, precisamos recorrer ao uso do terminador '\0' em conjunto com o comando for, por exemplo, para iterar os elementos.

Exemplo 4
#include <stdio.h>

void main()
{
    char string2[] = "string2";
    int i;
    
    for(i = 0 ; string2[i] != '\0'; i++)
        printf("%c", string2[i]);
}
Saída
string2

Para copiarmos, de forma básica, o conteúdo de uma string para uma outra string precisamos criar uma string "vazia" de destino. Utilizamos o comando for para iterar a string origem, usar o indexador [] para acessar os elementos da origem e realizar a cópia para o destino.

Exemplo 5
#include <stdio.h>

int main()
{
    char origem[] = "string2";
    char destino[8];
    
    int i;
    
    for(i = 0; i < 7; i++ )
       destino[i] = origem[i];
    destino[7] = '\0';
    
    printf("%s",destino);
    return 0;
}
Saída
string2

A string de destino no exemplo acima, deve ser declarada com espaço suficiente para adicionar o terminar '\0'.

Para descobrirmos o tamanho de uma string, precisamos iterar sobre essa string até que o terminador seja encontrado. Vamos utilizar ponteiro para auxiliar na iteração e também o comando while.

Exemplo 6
#include <stdio.h>

void main()
{
    char string[] = "string2";
    int contador = 0;
    
    while(string[contador] != '\0')
        contador++; 

    printf("%d",contador);
}
Saída
7

Podemos utilizar o operador sizeof para descobrir o número de elementos de uma string. Esse operador irá retornar o tamanho do vetor de char passado como argumento. Assim, temos que decrementar o seu retorno para excluir o terminador '\0' contabilizado.

Exemplo 7
#include <stdio.h>
int main()
{
    char string[] = "string2";
    printf("%lu",sizeof(string) - 1);
}
Saída
7

A bliblioteca string.h possui uma função chamada strlen que retorna o tamanho de uma string. Essa função será vista mais adiante em C String: Operações.

Uso de string como parâmetro de uma função é feita utilizando ponteiro ou como vetor de char como pode ser visto nas sintaxes abaixo:

Sintaxe
tipo_retorno nome_funcao(char string[]); //protótipo
tipo_retorno nome_funcao(char *string);  //protótipo
Exemplo 8
#include <stdio.h>

void funcao1( char v[])
{
    printf("%s\n", v);
    //omitido
}

void funcao2(char *s)
{
    printf("%s\n", s);
    //omitido    
}

int main()
{
    char string[] = "string2";
    funcao1(string);
    funcao2(string);
}
Saída
string2
string2

Para declararmos funções que retornam o tipo de dado string, precisamos declarar o tipo de retorno de uma função como o tipo ponteiro para char, como pode ser visto na sintaxe abaixo:

Sintaxe
char* funcao(<lista_parametros>); //protótipo
Exemplo 9
#include <stdio.h>

char *funcao1()
{
    return "string1";
}

char *funcao2()
{
    char *string = "string2";
    return string;
}

char *funcao3()
{
    static char string[] = "string3";
    return string;
}

int main()
{
    printf("%s\n", funcao1());
    printf("%s\n", funcao2());
    printf("%s\n", funcao3());
}
Saída
string2
string2
string3

O modificador static foi utilizado na função funcao3 no exemplo acima, pois a linguagem C não permite retornar ponteiro de variáveis locais.

C permite que a declaração de string seja feita em múltiplas linhas. Para isso, podemos utilizar (\) como quebra de linha. Isso deve ser feito seguindo as "regras" abaixo:

  1. Espaços em branco não pode ser usados após (\)
  2. Comentários não podem ser utilizados após (\)
Exemplo 10
#include <stdio.h>

int main()
{
    char* string = "uma\
 string\
 com\
 \t\ttab\
 em\
 mais\
 de\
 uma\
 linha";

    printf("%s", string);
    return 0;
}
Saída
uma string com 		tab em mais de uma linha

Outra forma é simplesmente quebrar as partes, tokens ou palavras da string em novas linhas, é delimitado-as usando (") como pode ser visto no exemplo a seguir:

Exemplo 11
#include <stdio.h>

int main()
{
    char* string = "uma "
"string "
"em "
"mais "
"de "
"uma "
"linha";

    printf("%s", string);
    return 0;
}
Saída
uma string em mais de uma linha
  1. 30/06/2026 - revisão 6 - Ajuste: objetivos, link string multilinha e ajustes pontuais
  2. 27/04/2026 - revisão 5 - Adição: 'string multilinha'
  3. 03/09/2025 - revisão 4 - Ajustes: Ex. 4, sintaxes e objetivos
  4. 08/10/2024 - revisão 3 - Correção: Numeração de exemplos, sintaxe 'Parâmetro/argumento'; Ajustes pontuais
  5. 30/08/2024 - revisão 2 - Correção em links de objetivos
  6. 28/09/2023 - revisão 1 - Correção em referências, erros gramaticais, sintaxe e exemplos
  7. 19/05/2023 - versão inicial