English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
A maneira de declarar strings é a seguinte:
char s[5];
Aqui, declaramos5Um array de caracteres.
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.
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.
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.).
#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.
Você pode usar a função fgets() para ler uma linha de string. E você pode usar puts() para exibir a string.
#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.
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.
#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); }
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。
#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 }