Coincidencia de cadenas en lenguaje C
const? ¿Ciel? clave[][12]? =?{?"Feliz",? "Nuevo"? "Año",? "2014"?};
//?¿Coincide exactamente con uno específico? ¿llave?
int? match1(const? Shire? *s,? const? Shire? *t)
{
¿Cuándo? (*s? amp amp?*t? amp amp?*s ?==?* t );
¿Volver? ! (*s?||?* t);
}
//?¿Están formando equipo? ¿llave? ¿Uno de ellos?
int? partido(const?char?*s)
{
int? I,? j;
¿Para qué? (i?=?0;?i?lt?sizeof?key?/?sizeof?key[0];?i)
Si? (match1(s, key [i])
{
//?¿Qué pasa si coincide? clave y luego imprime la clave? coincidente?
¿Para qué? (j?=?0;?key[I][j];?j)?putchar(key[I][j]);
putchar('\n');
¿Devolver 1;
}
¿Devolver 0;
int >
{
Char? s[BUFSIZ];
int? k;
//?Ingrese una cadena p>
¿Para qué (i?=?0;?i? lt?BUFSIZ?amp amp?(s[i]?=?getchar())?!=?\ n ';?i);
s[i]?=?'\0';
Coincidencia;
¿Regresar?
}El programa anterior determina si la cadena de entrada es una de una determinada clave.
Si no se requiere una coincidencia exacta, pero necesita detectar si la cadena de entrada contiene la clave, el proceso es el siguiente:
#Contains? ltstdio.h gt
const? ¿Ciel? clave[][12]? =?{?"Feliz",? "Nuevo"? "Año",? "2014"?};
//?¿Contiene alguno específico? ¿llave?
int? match1(const?char?*s,?const?char?*t)
{
const? ¿Ciel? *pag,? *q,? *r;
¿Para qué? (p?=?s,?q?=?t;?*p? amp amp?*q;?p?=?r,?q?=?t)
{
¿Para qué? (r?=?p? ?1;?*p?==?*q;?p,?q);
Si? (*q?==?'\0')?¿Regresar? 1;
¿Y si? (*p?==?'\0')?¿Volver? 0;
}
¿Volver? 0;
}
//? ¿Contiene un grupo? ¿llave? ¿Uno de ellos?
int? partido(const?char?*s)
{
int? I,? j;
¿Para qué? (i?=?0;?i?lt?sizeof?key?/?sizeof?key[0];?i)
Si? (match1(s, key [i])
{
//?¿Qué pasa si coincide? clave y luego imprime la clave? coincidente?
¿Para qué? (j?=?0;?key[I][j];?j)?putchar(key[I][j]);
putchar('\n');
¿Devolver 1;
}
¿Devolver 0;
int >
{
Char? s[BUFSIZ];
int? k;
//?Ingrese una cadena p>
¿Para qué (i?=?0;?i? lt?BUFSIZ?amp amp?(s[i]?=?getchar())?!=?\ n ';?i);
s[i]?=?'\0';
Si? (coincide)
//?Si coincide?, imprime la cadena de entrada original? ?
putchar('\n');
}
Devuelve 0;
}