Ferramentas do usuário

Ferramentas do site


strings

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.


strings [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1
Linha 1: Linha 1:
 +======  Strings em C ======
  
 +===== Implementação de Strings =====
 +A linguagem C implementa o conceito de cadeia de caracteres, ou strings, utilizando um [[vetor_matriz|vetor]] de caracteres. Ao se definir uma string portanto deve-se definir um [[vetor_matriz|vetor]] de caracteres com determinado tamanho. 
 +
 +A marcação do fim da string será indicada através da colocação de um caractere zerado, chamado tecnicamente de caractere'' **NULL**''. Este caractere pode ser indicado, testado, usado através do literal definido ''NULL'' quando se incluem arquivos //headers// ''stdio.h'' ou ''string.h'' ou através da forma de constante de caractere ''**‘\0’**''.
 +Como a string deve ser terminada por um caractere ''NULL'' sempre deve ser considerada uma posição a mais no vetor para este caractere. Por exemplo, se for definido um vetor de nomes com até 30 caracteres deve-se definir um vetor com 31 posições. Na definição de uma string pode-se também já assinalar um valor bastando para isto colocar após o **''‘=’''** a constante de inicialização entre aspas. 
 +
 +Para se imprimir uma string deve-se ser utilizador o formato [[tipos_dados|‘%s’]].
 +
 +<code c>
 +/* strings.c */
 +#include <stdio.h>
 +#include <string.h>
 +
 +int main(void)
 +{
 +   /* A definição é idêntica a um vetor, neste caso têm-se 39 posições para caracteres (o último é reservado para o \0) */
 +   char sNome [40] = "Pacifico Pacato Cordeiro Manso";
 +
 +   printf("[%s]\n", sNome);
 +   printf("[%d]\n", sizeof(sNome));
 +
 +   /* Este comando "limpa" o conteúdo da variável */
 +   sNome[0] = NULL;
 +
 +   printf("[%s]\n", sNome);
 +   /* o operador sizeof mostrará o tamanho reservado para a string e não o seu tamanho atual */
 +   printf("[%d]\n", sizeof(sNome));
 +
 +   return 0;
 +}
 +</code>
 +
 +===== Entrada e Saída de Strings =====
 +Para se realizar a entrada de strings pode-se utilizar a função [[scanf]], usando como formato o [[tipos_dados|‘%s’]]. Um detalhe importante sobre esta forma de entrada de string é o fato de somente ser lido a seqüência de caracteres até ser encontrado um branco, não sendo possível ler caracteres brancos para uma variável usando o [[scanf]].
 +
 +Uma maneira mais útil de se fazer á leitura de strings do terminal é utilizar a função [[gets]]. Esta função lê toda a linha e coloca o conteúdo na variável indicada, permitindo assim a entrada de caracteres em branco para dentro da cadeia.
 +
 +É de inteira responsabilidade do programador reservar espaço suficiente na variável para ser realizada a entrada de dados. Caso entre mais caracteres que o reservado ocorrerá invasão de memória cancelando o programa. Para realizar a saída de uma string, pode-se utilizar a função [[printf]] com o formato [[tipos_dados|‘%s’]] ou a função específica [[puts]].
 +
 +<code c>
 +/* strings_es.c */
 +#include <stdio.h>
 +#include <string.h>
 +
 +int main (void)
 +{
 +   char sNome [30];
 +   char sFrase [100];
 +
 +   printf("Entre com uma frase : \n");
 +
 +   gets(sFrase);
 +   puts(sFrase);
 +
 +   printf("Entre com o seu nome : ");
 +   scanf("%s\n", &sNome);
 +
 +   printf ("Sr(a). %s seja bem vindo ao curso\n\n", sNome);
 +   return 0;
 +}
 +</code>
 +
 +===== String como vetor =====
 +Devido ao fato de uma string ser implementado como um [[vetor_matriz|vetor]] de caracteres, nada impede que se faça o acesso a string utilizando índices, acessando assim cada caractere da string de maneira individual.
 +
 +<code c>
 +/* string_vetor.c */
 +#include <stdio.h>
 +#include <string.h>
 +
 +int main (void)
 +{
 +   char sNome[40];
 +   int  i;
 +
 +   printf("Entre com o seu nome : \n");
 +   gets(sNome);
 +
 +   printf("Nome digitado\n");
 +   for (i=0; i < strlen(sNome); i++)
 +   {
 +      putchar(sNome[i]);
 +   }
 +   putchar ('\n');
 +
 +   return 0;
 +}
 +</code>
 +
 +
 +===== Funções =====
 +  * [[strlen]] - tamanho de um string
 +  * [[strcat]] e [[strncat]] - concatena uma string
 +  * [[strcpy]] e [[strncpy]] - copia uma string para outra
 +  * [[strcmp]] e [[strncmp]] - comparação de strings
 +  * [[sprintf]] e [[snprintf]] - impressão em strings
 +  * [[sscanf]] - leitura em strings
 +
 + --- //[[marcos@laureano.eti.br|Marcos Laureano]] 2009/05/10 18:35//
strings.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1