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.
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:
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
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.
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
strcat
Sintaxe
strcat(string_destino, string_origem);
Realiza a concatenação do conteúdo de uma variável a outra.
Ambas devem ser strings.
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
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.
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
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
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
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
Obs:Os códigos dos programas utilizados neste artigo foram gentilmente cedidos pelo Prof. Fabio Schmitt.
_________________________________________________________________________
Vejamos outro exemplo:
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:
Postar um comentário