Ocorrência de uma string em outra

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

[ Hits: 9.205 ]

 


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

Conversão vetor de caracteres para double

Função recursiva para inverter um vetor de caracteres

Desligando Slackware com fonte ATX automaticamente

Leitura recomendada

O poder do #define

Desenvolvimento com C/C++ e GTK

Curso de linguagem C pela UFMG

stty: alternativa para echo e noecho

Curso de C online

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts