English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Linguagem C

Controle de Fluxo de Linguagem C

Funções no C

Matrizes no C

Ponteiros no C

Strings no C

Estruturas de Linguagem C

Arquivos de Linguagem C

Outros C

Manual de Referência do Linguagem C

Strings no C

Neste tutorial, você aprenderá sobre strings em programação C. Você aprenderá a declará-las, inicializá-las e usá-las em várias I / O (entrada/Operação de saída).

Em programação C, strings são sequências de caracteres terminadas por caractere nulo \0. Por exemplo:

char c[] = "c string";

Quando o compilador encontra uma sequência de caracteres entre aspas duplas \0, ele adiciona automaticamente um caractere nulo no final, por padrão.

Como declarar uma string?

A maneira de declarar strings é a seguinte:

char s[5];

Aqui, declaramos5Um array de caracteres.

Como inicializar strings?

Você pode inicializar strings de várias maneiras.

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};

Vamos dar outro exemplo:

char c[5] = "abcde";

Aqui, tentamos atribuir6caracteres (o último caractere é '\0') alocados para char têm5Um array de caracteres. Este é um comportamento errado, nunca faça isso.

Atribuição de strings

Em C, uma vez declarados, os arrays e strings não suportam a operação de atribuição de valores.

char c[100];
c = "C programming";  // Erro! O tipo de array não pode ser alocado.

Atenção:UsarFunção strcpy()Substituindo a cópia de strings.

Ler strings do usuário

Você pode usar a função scanf() para ler strings.

A função scanf() lê uma sequência de caracteres até encontrar um espaço (espaço, caractere de nova linha, tabulação, etc.).

Exemplo1:scanf() lê strings

#include <stdio.h>
int main()
{
    char name[20];
    printf("Insira o nome: ");
    scanf("%s", name);
    printf("Seu nome é %s.", name);
    return 0;
}

Resultados de saída

Insira o nome: Dennis Ritchie
Seu nome é Dennis.

Mesmo que Dennis Ritchie seja introduzido no programa acima, a string de nome contém apenas "Dennis". Porque há um espaço após o Dennis.

Como ler uma linha de texto?

Você pode usar a função fgets() para ler uma linha de string. E você pode usar puts() para exibir a string.

Exemplo2:fgets() e puts()

#include <stdio.h>
int main()
{
    char name[30];
    printf("Insira o nome: ");
    fgets(name, sizeof(name), stdin);  //Ler a string
    printf("Nome: ");
    puts(name);    //Exibir string
    return 0;
}

Resultados de saída

Insira o nome: Tom Hanks
Nome: Tom Hanks

Aqui, usamos a função fgets() para ler a string do usuário.

fgets(name, sizeof(name), stdlin); //Ler a string

O resultado de sizeof(name) é30. Portanto, podemos aceitar no máximo30 caracteres como entrada, isso é o tamanho da string name.

Para imprimir a string, usamos put (name);

Atenção:A função gets() também pode aceitar entrada do usuário. No entanto, ela foi removida do padrão C.
Isso é porque gets() permite que você insira caracteres de qualquer comprimento. Portanto, pode haver transbordamento de buffer.

Passar a string para a função

As strings podem ser passadas para a função de maneira semelhante a um array. Saiba mais sobrePassar um array para a funçãoMais informações.

Exemplo3:Passar a string para a função

#include <stdio.h>
void displayString(char str[]);
int main()
{
    char str[50];
    printf("Digite string: ");
    fgets(str, sizeof(str), stdin);             
    displayString(str);     //Passar a string para a função   
    return 0;
}
void displayString(char str[])
{
    printf("Saída de string: ");
    puts(str);
}

cadeias de caracteres e ponteiros

Semelhante a um array, o nome da string "decadência" cai em um ponteiro. Portanto, você pode usar ponteiros para operar os elementos da string. Recomendamos que você verifique este exemplo antes de verificarMatrizes e Ponteiros no C

Exemplo4:cadeias de caracteres e ponteiros

#include <stdio.h>
int main(void) {
  char name[] = "Harry Potter";
  printf("%c", *name);     // Saída: H
  printf("%c", *(name+1));   // Saída: a
  printf("%c", *(name+7));   // Saída: o
  char *namePtr;
  namePtr = name;
  printf("%c", *namePtr);     // Saída: H
  printf("%c", *(namePtr+1));   // Saída: a
  printf("%c", *(namePtr+7));   // Saída: o
}

Funções de string comuns