Strings em C

Implementação de Strings

A linguagem C implementa o conceito de cadeia de caracteres, ou strings, utilizando um vetor de caracteres. Ao se definir uma string portanto deve-se definir um 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 ‘%s’.

/* 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;
}

Entrada e Saída de Strings

Para se realizar a entrada de strings pode-se utilizar a função scanf, usando como formato o ‘%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 ‘%s’ ou a função específica puts.

/* 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;
}

String como vetor

Devido ao fato de uma string ser implementado como um vetor de caracteres, nada impede que se faça o acesso a string utilizando índices, acessando assim cada caractere da string de maneira individual.

/* 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;
}

Funções

Marcos Laureano 2009/05/10 18:35

strings.txt · Última modificação: 2009/05/10 18:26 por laureano
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0