[C] Ayuda Comprobar cadena que cambia

Iniciado por Goddamn, 22 Agosto 2016, 18:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Goddamn

Hola.
Lo que yo quiero hacer es comprobar una cadena el problema es que esta cadena cambia no siempre es igual ej: (Last match won by Lucas) lo que siempre cambia es el nombre, intente cortar la cadena original y comprobar la cadena cortada pero no me funciono capas que hice algo mal.


// el code lo saque de google
char *substring(size_t start, size_t stop, const char *src, char *dst, size_t size)
{
int count = stop - start;
if (count >= --size)
{
count = size;
}
sprintf(dst, "%.*s", count, src + start);
return dst;
}
//static const char text[] = "Last match won by Lucas";Corto la cadena después del "by "
char a[19], b[5], sz[100];
sprintf(sz,"%s", substring(1, 15, CadenaOriginal, a, sizeof a));

        if (strcmp("Last match won by", sz) == 0)
{
        }


Si tienen una mejor forma de hacerlo y me quieren decir mejor :)
Espero que me puedan ayudar gracias!!! ;D

AlbertoBSD

Que es lo que quieres hacer?

Comprobar si cambio la cadena o solo extraer el nombre nuevo?

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Goddamn

Lo que yo necesito es comprobar una cadena el problema es que la cadena cambia
Mira un ej

if (strcmp("Last match won by", pMessage) == 0)// La cadena original contiene lo que es (Last match won by Nombre)
{
}


Lo que yo quiero es cortar el nombre y dejar el texto nomas para así poder comprobarlo con un strcmp :)

.rn3w.

pero esa cadena tiene que estar en una variable

AlbertoBSD

Cita de: -rn3w- en 23 Agosto 2016, 05:28 AM
pero esa cadena tiene que estar en una variable

No es necesario que este en una variable, si es la una vez que la va usar....

Intenta esto:


char *temp = NULL;
char *last = "Last match won by";
temp = strstr(last,pMessage);
if(temp) { //La cadena en last si esta contenida en pMessage
int last_len =strlen(last);
int len = strlen(pMessage);
int restante = len - last_len;
temp = malloc(restante+1); //Reservamos memoria para el restante de la cadena
memcpy(temp,pMessage+last_len,restante);
printf("%s\n",temp); // temp deberia de contener el restante de la cadena pMessage
}



Saludos!

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Goddamn

Gracias ya voy a probar ese code de todos modos encontré una solución a mi problema .

if (strncmp(pMessage, "Last match won by ", 18) == 0)
{
}