String em C – vetor de caracteres

Por: Eduardo Casavella

O termo string serve para identificar uma sequência de caracteres.

Na prática, as strings são usadas para representar textos.

Em linguagem C, ao contrário de outras linguagens, não existe um tipo de dados string nativo.

Para representar uma string em C, devemos criar um vetor de caracteres, ou seja um vetor do tipo char.

Vejamos como declarar string em C.

Exemplo de declaração de string:

char nome_cliente[61];

Este comando cria a variável nome_cliente como um vetor de char com capacidade de armazenamento de 61 caracteres.

Ocorre, que o último caracter de uma string, deve ser sempre o caracter nulo “\0” que serve para indicar o final da string.

Sendo assim, em nosso exemplo temos 60 caracteres úteis para armazenar o nome, pois o \0 é o terminador da string e ocupa uma posição de armazenamento.

Como foram declaradas 61 posições e uma delas é ocupada pelo terminador, as outras 60 posições estão livres para armazenamento de caracteres.

Inicializando o valor de strings.

Vejamos alguns exemplos:

char nome_cliente[30] = "Fulano";
 
char nome_cliente[30] = {'F','u','l','a','n','o'};

Inicializando uma string sem definir o tamanho do vetor

char nome_cliente[] = "Fulano";

Neste caso, a quantidade de caracteres de armazenamento é calculada automaticamente de forma a ter a dimensão exata para conter a string que está sendo atribuída.

Para armazenar “Fulano”, são necessários 6 caracteres + 1 para o finalizador \0.

Então podemos dizer que

char nome_cliente[] = "Fulano";

equivale a declarar

char nome_cliente[7] = "Fulano";

Lendo uma string em C

Usando scanf

A função scanf permite fazer leitura de strings usando %s.

Em relação ao uso de scanf para armazenar string devemos observar duas coisas:

  • A função scanf realiza a leitura até encontrar um espaço, depois encerra a leitura e coloca o caracter terminador \0.
  • A variável que vai armazenar a string não necessita ser precedida por &.

Exemplo de utilização do scanf:

scanf(“%s”,nome);

Exemplo: Usando scanf para receber uma string.

#include<stdio.h>
#include<conio.h>

int main(void)
{
	char nome[61];
	
	printf("Digite seu nome: ");
	scanf("%s",nome);
	
	printf("O nome armazenado foi: %s", nome);
	
	getch();
	return 0;
}

Tela de execução

Tela de Execução exemplo 1

Tela de Execução exemplo 1

Funçao gets – (get string)

Esta função armazena tudo que foi digitado, inclusive os espaços, até que a tecla ENTER seja pressionada.

Exemplo:

printf (“Digite o nome do cliente:”);
gets(nome_cliente);

Exemplo de programa usando gets() para armazenar uma string

#include<stdio.h>
#include<conio.h>

int main(void)
{
	char nome[61];
	
	printf("Digite seu nome: ");
	gets(nome);
	
	printf("O nome armazenado foi: %s", nome);
	
	getch();
	return 0;
}

Tela de execução

Tela de execução exemplo 2

Tela de execução do exemplo 2

Observe que por definição, uma string nada mais é do que um vetor de caracteres.

Podemos percorrer o vetor normalmente, usando as mesmas estratégias usadas para vetores de números.

Exemplo: percorrendo um vetor de char

#include <stdio.h>
#include <conio.h>
int main(void)
{
	int i;
	
	//declarando e atribuindo valores no vetor de char
        //texto[7] usa 6 caracteres úteis + 1 caracter para o finalizador
	char texto[7] = "string";
	
	printf("Valor da variavel texto = %s\n", texto);
	
	//Percorrendo o vetor de char e mostrando
	//cada elemento individualmente
	for (i=0; i<6; i++)
	{
		printf("Valor do elemento %d da string = %c\n",i, texto[i]);
	}
	
	getch();
	return 0;
}

Tela de execução

Tela de execução exemplo 3

Tela de execução do exemplo 3

Até a próxima!

11 respostas a String em C – vetor de caracteres

  • raquel disse:

    Show cara. Valeu!!

  • Bruno Matos disse:

    Ajudou muito!

  • wellington disse:

    não entendi porque em usou %s no primeiro printf e no segundo usou %c.

  • Tallys Ruthiler disse:

    %s mostra a string e o %c mostra um único char, ou seja, uma única letra.

  • Fernanda Milanez disse:

    Valeu! Muito bem explicado.

  • Tiago disse:

    Por que você declarou texto[6] se “string” tem 6 letras mais o terminador \0?
    texto[7] = “string”; não seria o correto?

  • João Victor disse:

    Respondendo ao amigo ali em cima, %s é para um conjunto de char [] e %c é somente para char

  • vinicius disse:

    Preciso de uma “ajudinha” com esse trabalho, estou começando a estudar C e estou com dificuldades de fazer este trabalho. Se alguém me ajudar fico agradecido. Obrigado

    Implementar um programa para localizar/buscar palavras em uma string de caracteres. A string deve ser lida com fgets() e pode ter ateh 200 caracteres. O programa deve fazer a leitura da string e da palavra a ser buscada. O programa deve buscar a palavra e informar ao usuário onde a palavra está localizada na string por meio da “maiuscularização” dos caracteres que a compõe, ou seja, a string deve ser mostrada e a palavra localizada deve ter suas letras todas em maiúsculo, ou informar que a palavra não pode ser localizada. Alem de buscar palavras, o programa deve permitir “Deletar” ou “Substituir” a palavra encontrada. A deleção deve ser feita com arrasto da parte da string localizada a frente da palavra encontrada. A substituição colocará outra palavra no lugar, a qual pode ser maior ou menor do que a palavra original, podendo causar arrasto ou “empurramento”.

  • Bruna França disse:

    MUITO OBRIGADO!!! Aprendi mais aqui do que em minhas aulas.