Alimentación a nivel de niñera en lenguaje C: implementación de simulación de funciones de biblioteca

contenido

1. Implementación de simulación acelerada

Introducción a la función

Código:

 2. Simular la implementación de strcpy​

Introducción de la función:

Código 

3. Simular la realización de strcmp​

Introducción de la función:

 Código

4. Simular la implementación de strcat​

 Introducción a la función

 Código

 5. Simular la implementación de strstr

Código:


Amigos, soy su compañero de clase Xiao Wang 

Hoy, les traeré una implementación de simulación de una función de biblioteca de nivel de niñera.

Si la escritura es útil para todos, preste atención a mi página de inicio : Sus tres conexiones son mi mayor motivación
(doge) El blog de Xiao Wang que aprende bien el lenguaje C - Blog de CSDN - Blogger de dominio

También puedes seguir el gitee de Xiao Wang   , bitewang - Gitee.com

 

1. Simular estrés

Introducción a la función

  • La cadena tiene '\0' como marcador final y la función strlen devuelve el número de caracteres que aparecen antes de '\0' en la cadena (excluyendo ('\0')
  • La cadena a la que apunta el parámetro debe terminar con '/0'.
  • Tenga en cuenta que el valor de retorno de la función es size_t, que no está firmado
  • Aprende a simular la función strlen

Código:

 2. Simular la implementación de strcpy

Introducción de la función:

  • Los caracteres de origen deben terminar con '\0'
  • copiará '\0' en la cadena de origen al espacio de destino
  • El espacio de destino debe ser lo suficientemente grande para contener la cadena de origen
  • El espacio objetivo debe ser variable.

 ¿Muchos amigos tienen esta situación cuando implementan strcpy?

De hecho, la razón por la que no se puede imprimir aquí es que no se puede encontrar el '\0' en arr2, así que lo he estado buscando, lo que provocó que el compilador se bloquee (doge )

Código 

3. Simular la implementación de strcmp

Introducción de la función:

  • Si la primera cadena es mayor que la segunda cadena, devuelve un número mayor que 0
  • Si la primera cadena es igual a la segunda cadena, devuelve 0
  • Si la primera cadena es menor que la segunda cadena, devuelve un número menor que 0
  • ¡Aviso! strcmp no está comparando la longitud de la cadena, ¡pero! ! ! Compare el tamaño de los caracteres en las posiciones correspondientes en la cadena, si son iguales, luego compare el siguiente par hasta que sean diferentes o encuentren '\0';

 Código

int my_strcmp(const char*s1,const char*s2) {
	assert(s1 && s2);
	while (*s1 == *s2) {
		if (*s1 == '\0') {
			return 0;//相等
		}
		s1++;
		s2++;

	}
	if (*s1 > *s2) {
		return 1;
	}
	else {
		return -1;
	}

}
int main() {
	char arr1[] = "abcdef";
	char arr2[] = "abcdef";
	int ret = strcmp(arr1, arr2);
	if (ret > 0) {
		printf(">\n");

	}
	else if (ret == 0) {
		printf("==\n");
	}
	else {
		printf("<\n");
	}
	printf("%d\n", ret);
}

4. Simular cadena

 Introducción a la función

  • Los caracteres de origen deben terminar con '\0'
  • El espacio de destino debe ser lo suficientemente grande para contener el contenido de la cadena de origen
  • El espacio de destino debe ser modificable.
  • ¿Qué tal si se agrega la cadena a sí misma?

Cuando implementamos strcat, a menudo ocurren las siguientes situaciones

 Las razones son las siguientes: 1. Se desconoce la ubicación de '\0' en 1.arr1, por lo que arr2 lo ha estado buscando y luego se agrega el bit a arr1

                    2. El espacio de arr1 no es lo suficientemente grande y se ha formado un acceso a la memoria fuera de los límites

 Código

 5. Simular la implementación de strstr

Código:

¡Lo anterior es la implementación de simulación de las cinco funciones de la biblioteca presentadas por Xiao Wang a sus amigos!

Si el artículo es útil para todos, ¡es mejor dar un enlace de tres! 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_59796310/article/details/123752480
Recomendado
Clasificación