Ocorrência de uma string em outra

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

[ Hits: 9.228 ]

 


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

Encontrando erros em seus programas

Conversão vetor de caracteres para double

Curso de linguagem C pela UFMG

Site com questões de programação

Switch em C, e se a opção for inválida?

  

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