Linguagem C - String

Vamos nesta aula observar como os tipos de dados texto são tratados em Linguagem C. Suas principais funções e resultados. Veja o primeiro exemplo.

Exemplo 01 : Criar um programa que leia nome e sobrenome e apresente o nome completo.
Observe o código e a saída em monitor do código feito em DEV C.
Neste exemplo observe que existe a inclusão de uma nova biblioteca: <String.h> para que possa ser utilizada a função fgets e a função fflush. Observe a diferença das funções de entrada para ler textos.



















fgets é necessário, uma vez que precisamos ler os textos mesmo com espaços em branco – o que scanf não faz.
fflush(stdin) também se faz necessária para limpar o barramento, isto é, para não comprometer os dados lidos, limpamos sua via de entrada, deste modo a função fgets lê os dados e os armazena mantendo sua integridade.
Por outro lado, poderíamos ainda ter executado o programa com o código diferente, veja:



































Mas...
... lembrando que a scan possui as desvantagens mencionadas anteriormente.


Para maior detalhe de resultados e funções observe o trecho a seguir.
_________________________________________________________________________

Construiremos exemplos de programas em C para exemplificar as funções mais utilizadas.
Nas funções a seguir, utilizamos o seguinte padrão para descrever
a sintaxe:
string_destino: é a string que recebe a cópia
string_origem: é a string que contém a cadeia de caracteres que será copiada.

strcpy

Sintaxe:
strcpy(string_destino, string_origem);
Realiza a cópia do conteúdo de uma variável a outra.
Obs:Ambas devem ser strings.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h> //necessário para strcpy
#include <conio.h>
int main (void)
{
   char nome[15];
   strcpy(nome, "Fulano de Tal");
   //strcpy(string_destino, string_origem);
   //note que a string de destino é nome
   //a string de origem é "Fulano de Tal"
   printf("Nome = %s", nome);
   getch();
   return 0;
}
Tela de execução
execução exemplo strcpy
Execução do exemplo strcpy

strncpy

Sintaxe:
strncpy(string_destino, string_origem, tamanho);
Realiza a cópia do conteúdo de uma variável a outra, porém,
deve ser especificado o tamanho a ser copiado.
Obs:Tanto a variável de destino como a de origem devem ser strings.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>//necessário para strncpy
#include <conio.h>
int main (void)
{
   char str1[8] = "Curso C";
   char str2[5];
   strncpy(str2, str1, 5);
   str2[5] = '\0';
   printf("str2 = %s\n", str2);
   getch();
   return 0;
}
Tela de execução
execução exemplo strncpy
Execução do exemplo strncpy

strcat

Sintaxe
strcat(string_destino, string_origem);
Realiza a concatenação do conteúdo de uma variável a outra.
Ambas devem ser strings.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Exemplo strcat
#include <stdio.h>
#include <string.h>//necessário para strcat
#include <conio.h>
int main (void)
{
   char str[10] = "Curso";
   strcat(str, " de C");
   //Concatena a string " de C" com o conteúdo da string str
   printf("str = %s\n", str);
   //Será exibido curso de C
   getch();
   return 0;
}
Tela de execução
execução exemplo strcat
Execução do exemplo strcat

strncat

Sintaxe:
strncat(string_destino, string_origem, tamanho);
Realiza a concatenação do conteúdo de uma variável a outra,
porém, deve ser especificado o tamanho a ser concatenado.
Ambas devem ser strings.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Exemplo strncat
#include <stdio.h>
#include <string.h>//necessário para strncat
#include <conio.h>
int main (void)
{
   char str1[20] = "Curso";
   char str2[17] = " de programacao C";
   strncat(str1, str2, 15);
   //concatena a string1 com 15 posições da string2
   printf("str1 = %s\n", str1);
   //Será exibido Curso de Programação
   getch();
   return 0;
}
Tela de execução
execução exemplo strncat
Execução do exemplo strncat

strlen

Sintaxe:
variável do tipo inteiro = strlen(string);
Determina o tamanho de uma string.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Exemplo strlen
#include <stdio.h>
#include <string.h>//necessário para strlen
#include <conio.h>
int main (void)
{
   char str[5] = "Curso";
   int tamanho;
   tamanho = strlen(str);
   printf("O tamanho da string %s vale %d\n", str, tamanho);
   getch();
   return 0;
}
Tela de execução
execução exemplo strlen
Execução do exemplo strlen

strcmp

Sintaxe:
variável do tipo inteiro = strcmp(string1, string2);
Compara o conteúdo de duas strings;
Possíveis valores de retorno:
0: conteúdo das strings são iguais
< 0: conteúdo da string1 é menor do que string2
> 0: conteúdo da string1 é maior do que string2
Exemplo de programa usando strcmp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>//necessário para strcmp
#include <conio.h>
int main (void)
{
  char str1[3] = "abc";
  char str2[3] = "abd";
  int retorno;
  retorno = strcmp(str1, str2);
  printf("retorno = %d\n", retorno);
  //mostra o retorno da função strcmp
  getch();
  return 0;
}
Tela de execução
execução exemplo strcmp
Execução do exemplo strcmp

strncmp

Sintaxe:
variável do tipo inteiro = strncmp(string1, string2, tamanho);
Também faz a comparação do conteúdo de duas strings, porém, deve ser especificado o tamanho a ser comparado;
Possíveis valores de retorno:
0: conteúdo das strings são iguais
< 0: conteúdo da string1 é menor do que string2
> 0: conteúdo da string1 é maior do que string2
Exemplo de programa usando strncmp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Exemplo strncmp
#include <stdio.h>
#include <string.h>//necessário para strncmp
#include <conio.h>
int main (void)
{
  char str1[10] = "Curso de C";
  char str2[22] = "Curso de programação C";
  int retorno;
  retorno = strncmp(str1, str2, 5);
  printf("retorno = %d\n", retorno);
  getch();
  return 0;
}
Tela de execução
execução exemplo strncmp
Execução do exemplo strncmp

Obs:Os códigos dos programas utilizados neste artigo foram gentilmente cedidos pelo Prof. Fabio Schmitt.
_________________________________________________________________________

Vejamos outro exemplo:
Exemplo 02 : Criar um programa que leia o nome completo e apresente uma saudação e o nome completo.


            Como observamos anteriormente, precisamos nestes casos da biblioteca String para a função fgets. Deste modo é possível ler o nome sem perda de caracteres, mesmo que este seja apresentado com o texto de boas vindas.

Pronto! Pronto!!!
... por hora é isso!




Nenhum comentário: