Strings em C: como declarar e inicializar variáveis ​​de string em C

O que é String em C?

A Cadeia em C nada mais é do que uma coleção de caracteres em uma sequência linear. 'C' sempre trata uma string como um único dado, mesmo que contenha espaços em branco. Um único caractere é definido usando representação de aspas simples. Uma string é representada entre aspas duplas.

Example, "Welcome to the world of programming!"

'C' fornece biblioteca padrão que contém muitas funções que podem ser usadas para realizar facilmente operações complicadas em Strings em C.

Como declarar uma string em C?

AC String é um array simples com char como tipo de dados. Linguagem 'C' não oferece suporte direto a string como tipo de dados. Portanto, para exibir uma String em C, você precisa usar um array de caracteres.

A sintaxe geral para declarar uma variável como String em C é a seguinte,

char string_variable_name [array_size];

A declaração clássica de strings pode ser feita da seguinte forma:

 char string_name[string_length] = "string";

O tamanho de um array deve ser definido ao declarar uma variável String C porque é usado para calcular quantos caracteres serão armazenados dentro da variável string em C. Alguns exemplos válidos de declaração de string são os seguintes,

char first_name[15];    //declaration of a string variable
char last_name[15];

O exemplo acima representa variáveis ​​​​de string com um tamanho de array de 15. Isso significa que o array de string C fornecido é capaz de conter no máximo 15 caracteres. A indexação do array começa em 0, portanto, ele armazenará caracteres das posições 0 a 14. O compilador C adiciona automaticamente um caractere NULL '\0' à matriz de caracteres criada.

Como inicializar uma string em C?

Vamos estudar a inicialização de String em C. O exemplo a seguir demonstra a inicialização de Strings em C,

char first_name[15] = "ANTHONY";
char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declaration
char string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */
char string2 [ ] = "world";  /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */
char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/

Na string3, o caractere NULL deve ser adicionado explicitamente e os caracteres são colocados entre aspas simples.

'C' também nos permite inicializar um variável string sem definir o tamanho da matriz de caracteres. Isso pode ser feito da seguinte maneira,

char first_name[ ] = "NATHAN";

O nome de Strings em C atua como um ponteiro porque é basicamente um array.

Entrada de string C: programa C para ler string

Ao escrever programas interativos que solicitam entrada do usuário, C fornece as funções scanf(), get() e fgets() para encontrar uma linha de texto inserida pelo usuário.

Quando usamos scanf() para ler, usamos o especificador de formato “%s” sem usar “&” para acessar o endereço da variável porque o nome de um array atua como um ponteiro.
Por exemplo:

#include <stdio.h>
int main() {
char name[10];
int age;
printf("Enter your first name and age: \n");
scanf("%s %d", name, &age); 
printf("You entered: %s %d",name,age);
}

Saída:

Enter your first name and age:
John_Smith 48

O problema com a função scanf é que ela nunca lê Strings inteiras em C. Ela interromperá o processo de leitura assim que ocorrer espaço em branco, feed de formulário, tabulação vertical, nova linha ou retorno de carro. Suponha que forneçamos a entrada como “Tutoriais do Guru99”, então a função scanf nunca lerá uma string inteira, pois um caractere de espaço em branco ocorre entre os dois nomes. A função scanf só irá ler Guru99.

Para ler uma string que contém espaços, usamos a função get(). Gets ignora os espaços em branco. Ele para

leitura quando uma nova linha é alcançada (a tecla Enter é pressionada).

Por exemplo:

#include <stdio.h>
int main() {
char full_name[25];
printf("Enter your full name: ");
gets(full_name);
printf("My full name is %s ",full_name);
return 0;
}

Saída:

Enter your full name: Dennis Ritchie
My full name is Dennis Ritchie

Outra alternativa mais segura para get() é a função fgets() que lê um número especificado de caracteres.
Por exemplo:

#include <stdio.h>
int main() {
char name[10];
printf("Enter your  name plz: ");
fgets(name, 10, stdin);
printf("My name is %s ",name);
return 0;}

Saída:

Enter your name plz: Carlos
My name is Carlos

Os argumentos fgets() são:

  • o nome da string,
  • o número de caracteres a serem lidos,
  • stdin significa ler a entrada padrão que é o teclado.

Saída de string C: programa C para imprimir uma string

A função printf padrão é usada para imprimir ou exibir Strings em C em um dispositivo de saída. O especificador de formato usado é %s

Exemplo,

printf("%s", name);

A saída da string é feita com as funções fputs() e printf().

função fputs()

O fputs() precisa do nome da string e de um ponteiro para onde você deseja exibir o texto. Usamos stdout que se refere à saída padrão para imprimir na tela.
Por exemplo:

#include <stdio.h>
int main()
{char town[40];
  printf("Enter your town: ");
  gets(town);
  fputs(town, stdout);
  return 0;}

Saída:

Enter your town: New York
New York

coloca função

A função puts é usada para imprimir string em C em um dispositivo de saída e mover o cursor de volta para a primeira posição. Uma função puts pode ser usada da seguinte maneira,

#include <stdio.h>
int main() {
char name[15];
gets(name);        //reads a string
puts(name);        //displays a string
return 0;}

A sintaxe desta função é comparativamente simples do que outras funções.

A biblioteca de strings

A biblioteca padrão 'C' fornece várias funções para manipular as strings dentro de um programa. Essas funções também são chamadas de manipuladores de string. Todos esses manipuladores estão presentes dentro arquivo de cabeçalho.

função Propósito
strlen () Esta função é usada para encontrar o comprimento de uma string. Retorna quantos caracteres estão presentes em uma string, excluindo o caractere NULL.
strcat(str1, str2) Esta função é usada para combinar duas strings para formar uma única string. Acrescenta ou concatena str2 ao final de str1 e retorna um ponteiro para str1.
strcmp(str1,str2) Esta função é usada para comparar duas strings entre si. Retorna 0 se str1 for igual a str2, menor que 0 se str1 < str2 e maior que 0 se str1 > str2.

Vamos considerar o programa abaixo que demonstra as funções da biblioteca de strings:

#include <stdio.h>
#include <string.h>
int main () {
//string initialization
char string1[15]="Hello";
char string2[15]=" World!";
char string3[15];
int val;

//string comparison
val= strcmp(string1,string2);
if(val==0){
    printf("Strings are equal\n");
}
else{
    printf("Strings are not equal\n");
}

//string concatenation
printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!

//string length
printf("\nLength of first string:%d",strlen(string1));
printf("\nLength of second string:%d",strlen(string2));

//string copy
printf("\nCopied string is:%s\n",strcpy(string3,string1));  //string1 is copied into string3
return 0;
}

Saída:

Strings are not equal
Concatenated string:Hello World!
Length of first string:12
Length of second string:7
Copied string is:Hello World!

Outras funções importantes da biblioteca são:

  • strncmp(str1, str2, n): retorna 0 se os primeiros n caracteres de str1 forem iguais aos primeiros n caracteres de str2, menor que 0 se str1 < str2 e maior que 0 se str1 > str2.
  • strncpy(str1, str2, n) Esta função é usada para copiar uma string de outra string. Copia os primeiros n caracteres de str2 para str1
  • strchr(str1, c): retorna um ponteiro para a primeira ocorrência do caracter c em str1, ou NULL se o caracter não for encontrado.
  • strrchr(str1, c): pesquisa str1 ao contrário e retorna um ponteiro para a posição do caracter c em str1, ou NULL se o caracter não for encontrado.
  • strstr(str1, str2): retorna um ponteiro para a primeira ocorrência de str2 em str1, ou NULL se str2 não for encontrado.
  • strncat(str1, str2, n) Acrescenta (concatena) os primeiros n caracteres de str2 ao final de str1 e retorna um ponteiro para str1.
  • strlwr(): para converter string para minúscula
  • strupr(): para converter string em maiúscula
  • strrev() : para reverter string

Convertendo uma string em um número

Na programação C, podemos converter uma sequência de caracteres numéricos em um valor numérico para evitar erros em tempo de execução. A biblioteca stdio.h contém as seguintes funções para converter uma string em um número:

  • int atoi(str) Significa ASCII para número inteiro; ele converte str no valor int equivalente. 0 será retornado se o primeiro caractere não for um número ou nenhum número for encontrado.
  • double atof(str) Significa ASCII para float, ele converte str para o valor double equivalente. 0.0 será retornado se o primeiro caractere não for um número ou nenhum número for encontrado.
  • long int atol(str) Significa ASCII para long int, converte str no valor inteiro longo equivalente. 0 será retornado se o primeiro caractere não for um número ou nenhum número for encontrado.

O programa a seguir demonstra a função atoi():

#include <stdio.h>
int main()
{char *string_id[10];
  int ID;
  printf("Enter a number: ");
  gets(string_id);
  ID = atoi(string_id);
   printf("you enter %d  ",ID);
  return 0;}

Saída:

Enter a number: 221348
you enter 221348
  • Uma declaração de ponteiro de string como char *string = “linguagem” é uma constante e não pode ser modificada.

Resumo

  • Uma string é uma sequência de caracteres armazenados em uma matriz de caracteres.
  • Uma string é um texto entre aspas duplas.
  • Um caractere como 'd' não é uma string e é indicado por aspas simples.
  • 'C' fornece funções de biblioteca padrão para manipular strings em um programa. Manipuladores de string são armazenados em arquivo de cabeçalho.
  • Uma string deve ser declarada ou inicializada antes de ser usada em um programa.
  • Existem diferentes funções de string de entrada e saída, cada uma delas com suas características.
  • Não se esqueça de incluir a biblioteca de strings para trabalhar com suas funções
  • Podemos converter string em número através de atoi(), atof() e atol() que são muito úteis para processos de codificação e decodificação.
  • Podemos manipular strings diferentes definindo um array de strings em C.