Comprobar si una cadena contiene una subcadena en C
-
Utiliza la función
str
para comprobar si una cadena contiene una subcadena en C -
Utilice la función
strcasestr
para comprobar si una cadena contiene una subcadena -
Utilice la función
strncpy
para copiar una subcadena
Este artículo explicará varios métodos para comprobar si una cadena contiene una subcadena dada en C.
Utiliza la función str
para comprobar si una cadena contiene una subcadena en C
La función str
es parte de las facilidades de la biblioteca estándar de C para cadenas, y está definida en la cabecera <string.h>
. La función toma dos argumentos de puntero char
, el primero denota la cadena a buscar y el otro denota la cadena a buscar. Encuentra la primera dirección inicial de la subcadena dada y devuelve el puntero correspondiente a char
. Si la subcadena no se encuentra en la primera cadena argumentada, se devuelve el puntero NULL.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *tmp = "This string literal is arbitrary";
int main(int argc, char *argv[]) {
char *ret;
ret = strstr(tmp, "literal");
if (ret)
printf("found substring at address %p\n", ret);
else
printf("no substring found!\n");
exit(EXIT_SUCCESS);
}
Producción :
found substring at address 0x55edd2ecc014
Utilice la función strcasestr
para comprobar si una cadena contiene una subcadena
La función strcasestr
no forma parte de las funciones de la biblioteca estándar, sino que está implementada como una extensión en la biblioteca de C de GNU, que puede indicarse con la definición de la macro _GNU_SOURCE
. Una vez definida, podemos llamar a la función strcasestr
para encontrar la primera ocurrencia de la subcadena dada. Sin embargo, esta función ignora el caso de ambas cadenas.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *tmp = "This string literal is arbitrary";
int main(int argc, char *argv[]) {
char *ret;
ret = strcasestr(tmp, "LITERAL");
if (ret)
printf("found substring at address %p\n", ret);
else
printf("no substring found!\n");
exit(EXIT_SUCCESS);
}
Producción :
found substring at address 0x55edd2ecc014
Utilice la función strncpy
para copiar una subcadena
Alternativamente, se puede copiar la subcadena dada a un nuevo buffer usando la función strncpy
. Toma tres argumentos, el primero de los cuales es el puntero char
de destino donde se almacenará la subcadena copiada. El segundo argumento es la cadena de origen, y el último argumento denota el primer número de bytes a copiar como máximo. Ten en cuenta que si el byte nulo no se encuentra en los primeros bytes de la cadena de origen, la cadena de destino no tendrá terminación nula.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *tmp = "This string literal is arbitrary";
int main(int argc, char *argv[]) {
char *str = malloc(strlen(tmp));
printf("%s\n", strncpy(str, tmp, 4));
printf("%s\n", strncpy(str, tmp + 5, 10));
free(str);
exit(EXIT_SUCCESS);
}
Producción :
This
string lit
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook