Bueno ando con ganas de empezar en C así que me arme esta función es parecida a StringInStr de AutoIt o parecido a Pos de delphi(creo). No esta optimizado.

Es de indice 0. (la Menor posición valida)
En caso de algún error o no encontrase la cadena muestra -1.
int StringInStr(char sString[],char sFind[])

{
    int i=0;
    int iPost=0;
    int lensFind=strlen(sFind);
    int lensString=strlen(sString);

    if (lensFind>lensString)
    {
        return -1;
    }

    for (i=0; i<lensString; i++)
    {
        if (sString[i]==sFind[iPost])
        {

            iPost++;
            if (iPost==lensFind)
            {
                return i-lensFind+1;
                break;

            }
        }
        else
        {

            iPost=0;

        }

    }

    if (iPost==lensFind)
    {
        return i-lensFind+1;
    }
    else
    {

        return -1;
    }
}
Uso:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int StringInStr(char sString[],char sFind[]);
int main()
{
    char sString1[]="Hola Yo Soy Pink";
    char sFind2[]="Soy Pink";
    printf("Posicion: %d\n",StringInStr(sString1,sFind2));

    return 0;
}

Código: Seleccionar todo

Salida:
Posición: 8

Saludos
Imagen
se ve bien olle pink creo que no era necesario poner el ultimo if-else ya que estaria rearfimando algo ya hecho
Skype:crack8111
Si. o mas bien no.

yo la dejaría mas bien sin el return antes del break asi el ultimo else si se usa. pero como ya la había posteado me dio flojera corregirla.

Saludos
Imagen
Responder

Volver a “Fuentes”