Ocorrência de uma string em outra

Publicado por Kleber de Andrade Reis em 04/11/2004

[ Hits: 8.623 ]

 


Ocorrência de uma string em outra



Esse pequeno programa nos trás a posição da ocorrência "t", que no caso é "kl" em "s" (uma string digitada pelo usuário). Caso não tenha ocorrência de "t" em "s", a função rindex retorna -1.

#include<stdio.h>

int rindex(char s[],char t[])
{
    int i=0,j=0,k=0,aux,dir;
    
    while(t[j]!='{TEXTO}')
        j++;    
    while(s[i+k]!='{TEXTO}')
    {  
        if(t[k]==s[i+k])
            k=k+1;
        else
        {
            i++;
            k=0;
        }              
        if(k==j)
        {
            k=0;
            dir=i+1;
            i++;
            aux=1;
        }
    }
    if(aux==1)
        return (dir);
    else
        return -1;
};    

main()
{
    int pos,i=0;
    char str[1000],c;
    printf("Digite uma string para str\n"); /*le str*/
    c=getchar();
    while(c!='\n'&&i<999)
    {
        str[i++]=c;
        c=getchar();
    }
    str[i]='{TEXTO}';    
    pos=rindex(str,"kl");
    if(pos>=0)
        printf("\nA ocorrencia + a direita de t em s e na posicao: %i\n",pos);
    else
        printf("\nNao ha ocorrencia de t em s\n");
        
};
Outras dicas deste autor

Desligando Slackware com fonte ATX automaticamente

Função recursiva para inverter um vetor de caracteres

Conversão vetor de caracteres para double

Leitura recomendada

Conversão vetor de caracteres para double

Melhor Controle de Memória de Strings em C

Incluindo paths para os seu próprios headers

Pesquisar número num vector em C

Compilando e executando programas em C no Linux

  

Comentários
[1] Comentário enviado por kandrade em 08/11/2004 - 08:32h

e ai galera não sei pq mas esse código q eu enviei sofreu algumas alterações..........ai vai o código correto..........a função rindex retorna a posição + a direita da ocorrencia de t em s......ou seja a posição da última ocorrencia..........te+........


#include<stdio.h>

int rindex(char s[],char t[])
{
int i=0,j=0,k=0,aux,dir;

while(t[j]!='{COMENTARIO}')
j++;
while(s[i+k]!='{COMENTARIO}')
{
if(t[k]==s[i+k])
k=k+1;
else
{
i++;
k=0;
}
if(k==j)
{
k=0;
dir=i+1;
i++;
aux=1;
}
}
if(aux==1)
return (dir);
else
return -1;
};

main()
{
int pos,i=0;
char str[1000],c;
printf("Digite uma string para str\n"); /*le str*/
c=getchar();
while(c!='\n'&&i<999)
{
str[i++]=c;
c=getchar();
}
str[i]='{COMENTARIO}';
pos=rindex(str,"kl");
if(pos>=0)
printf("\nA ocorrencia + a direita de t em s e na posicao: %i\n",pos);
else
printf("\nNao ha ocorrencia de t em s\n");
};

[2] Comentário enviado por kandrade em 08/11/2004 - 08:35h

onde está escrito '{comentario}' tem q ser o caracter q indica fim de string.........\t ok!!!!!!!

[3] Comentário enviado por jochan em 14/12/2005 - 14:47h

Muito legal, vai me ajudar bastente no meu projeto de C++ ... =)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts