sexta-feira, 28 de novembro de 2008

Operações com Strings

Existem algumas funções da biblioteca padrão de C para manipular strings. Vamos a elas.

strcmp compara duas strings e retorna se uma é maior que outra.

resultado=strcmp(string1,string2);
if(resultado==0) {
printf("Duas strings são exatamente iguais!\n");
else
if(resultado>0) {
printf("string1 é maior que string2!\n");
else
printf("string2 é maior que string1!\n");

strlen retorna o comprimento de uma string em nº de caracteres.

printf("Entre com seu nome: ");
scanf("%s",nome);

tamanho=strlen(nome);
printf("Seu nome tem %d caracteres", tamanho);

Existem inúmeras funções para manipulação de strings em C, das quais as mais usadas são: strcpy,strcmp,strlen,strcat.

strcpy:

Esta função serve para copiar uma string para outra em C. Os parâmetros desta função são a string fonte e a string destino, respectivamente. Exemplo:

char *string_retorno;
char string_fonte[] = "EXEMPLO DE MANIPULACAO DE STRINGS";
char *string_destino;

string_destino = (char *)malloc(80);

string_retorno = strcpy(string_destino,string_fonte);

printf("String Fonte = %s, String Retorno = %s",string_fonte,string_retorno);

Após a execução deste pequeno trecho de programa, a saída para a tela deverá ser:

String Fonte = EXEMPLO DE MANIPULACAO DE STRINGS, String Retorno = EXEMPLO DE MANIPULACAO DE STRINGS

Neste exemplo, a string 'string_retorno' será um ponteiro para a variável string_destino. Esta string de retorno da função strcpy serve somente para verificar se a cópia das strings foi feita com sucesso, exemplo:

if (strcpy(string_fonte,string_destino) == NULL)
{
printf("Erro ao copiar as strings\n");
}

strcmp:

Esta função serve para comparar duas strings. Esta função retornará 0 (zero), se as strings forem iguais, e diferente de zero se as strings forem diferentes.

Exemplo:
char string1[]="STRING";
char string2[]="STRING";
char string3[]="sTRING";

if (strcmp(string1,string2) == 0)
{
printf("As strings são iguais\n");
}
else
{
printf("As strings são diferentes\n");
}

if (strcmp(string1,string3) == 0)
{
printf("As strings são iguais\n");
}
else
{
printf("As strings são diferentes\n");
}

A saída deste pequeno trecho de programa deverá ser:

As strings são iguais
As strings são diferentes

strlen:

Esta função retorna o tamanho de uma string. O único parâmetro desta função é a string da qual você quer saber o tamanho. Neste exemplo, vamos resolver o problema que foi mostrado no início deste artigo:

void on_btn_Ok_pressed (GtkButton *button, gpointer user_data)
{
char *texto;
entry1 = GTK_ENTRY(lookup_widget((button),"entry1"));

text1 = GTK_TEXT(lookup_widget((button),"box_Nome"));

texto = (gtk_entry_get_text(entry1));
/* gtk_text_insert(text1,NULL,NULL,NULL,texto, ????????????); */
gtk_text_insert(text1,NULL,NULL,NULL,texto, strlen(texto));
gtk_entry_set_text(entry1,"");

}

strcat:

A função strcat faz é pegar a string fonte e concatenar no final da string destino. Exemplo:

char *string_retorno;
char string_final[] = "EXEMPLO DE MANIPULACAO ";
char string_inicial[] = "DE STRINGS";
string_retorno = strcat(string_final,string_inicial);

printf("String Final = %s, String Inicial = %s, String Retorno = %s",string_final,string_inicial,string_retorno);

Dessa forma a saída é: String Fonte1 = EXEMPLO DE MANIPULACAO, String Fonte2 = DE STRINGS, String Retorno = EXEMPLO DE MANIPULACAO


Nenhum comentário: