Ocorrência de uma string em outra

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

[ Hits: 8.402 ]

 


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

Conversão vetor de caracteres para double

Função recursiva para inverter um vetor de caracteres

Leitura recomendada

Incluindo paths para os seu próprios headers

Curso de C em vídeo ambientado no Linux

Instalando Code::Blocks no Ubuntu 12.04

Compilando .EXEs no Linux (C/C++)

Programando no Ubuntu - aplicações gráficas em C++ com Eclipse e Glade

  

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