Explicación detallada de las funciones de caracteres C/C++ y funciones de cadena: funciones de cadena con longitud limitada

Página de inicio personal : haz clic en mí para ingresar a la página de inicio

Clasificación de columnas: lenguaje C elemental       Programación en lenguaje C——KTV        Minijuego en lenguaje C      Lenguaje C avanzado

preguntas del examen de lenguaje c

Todos son bienvenidos a dar me gusta, comentar y coleccionar.

Trabajen duro juntos e vayan juntos a una gran fábrica.

Tabla de contenido

1. Introducción        

2. Funciones de cadena con longitud limitada

2.1 función strncpy

2.2 función strncat

2.3 función strncmp

2.4 Resumen

3. Funciones de cadena especiales

3.1 función strstr

3.2función strtok


1. Introducción        

        En el artículo anterior, hablamos sobre funciones de cadena con longitud ilimitada, incluidas la función strlen, la función strcmp, la función strcpy y la función strcat. Los veteranos que lo han aprendido y los que no lo han aprendido pueden hacer clic en caracteres con longitud ilimitada .

Hoy hablaremos de funciones de cadena con longitud limitada, incluidas la función strncpy, la función strncat y la función strncmp. En estas funciones, el límite de longitud requiere que agreguemos el número de bytes a modificar. También hay algunas funciones especiales que incluyen la función strstr y la función strtok. Mira nuestro contenido hoy.

2. Funciones de cadena con longitud limitada

2.1 función strncpy

Cuando ingresamos a la función cplusplus, podemos ver los parámetros de la función strnpcy.

        El tipo de retorno de la función strncpy es char*, y sus parámetros son char * destino, const char * fuente, size_t num. Dado que no es necesario modificar la fuente aquí, solo es necesario copiarla, por lo que se agrega const. Para size_num, es necesario copiar num bytes de la cadena de origen al destino y modificar el primer byte. El código detallado es el siguiente:

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdefghigh";
	char brr[] = "zzzzz";
	strncpy(arr, brr, 4);
	printf("%s", arr);
	return 0;
}

 corramos y veamos

Encontramos que los primeros 4 bytes de la cadena arr se modifican a los primeros 4 bytes de la cadena.

2.2 función strncat

De manera similar, ingresamos a la función cplusplus para ver sus parámetros.

        El valor de retorno de la función strncat es char* y sus parámetros son char * destino, const char * fuente, size_t num

y la función strncpy. Dado que la función fuente no necesita ser modificada, la función const se usa para modificarla. Size_t num es el número de caracteres que deben conectarse. El código detallado es el siguiente:

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[100] = "abcdefghigh";
	char brr[] = "xzzzzz";
	strncat(arr, brr, 4);
	printf("%s", arr);
	return 0;
}

Cuando ejecutamos el código podemos ver:

Aquí, nuestra cadena brr es fuente, conecta sus primeros 4 caracteres a la parte posterior de la cadena arr y copia '\0' al mismo tiempo;

2.3 función strncmp

Entramos en la web de cplusplus

        Podemos ver que los parámetros de strncmp son const char * str1, const char * str2, size_t num. Dado que str1 y str2 no necesitan modificarse, solo necesitan compararse, por lo que se modifican con const. size_t es el cadena individual que necesita ser comparada número. El valor de retorno de la función strncmp es de tipo int.

         Si el primero es mayor que el segundo, devuelve datos mayores que 0. Si el primero es menor que el segundo, devuelve datos menores que 0. Si el primero es igual al segundo, devuelve 0. Tenga en cuenta que La comparación aquí es para el primer número de caracteres. Para comparar, el formulario de comparación es el mismo que el strcmp anterior. La demostración del código específico es la siguiente:

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdefghigh";
	char brr[] = "abce";
	int ret=strncmp(arr, brr, 4);
	printf("%d", ret);
	return 0;
}

Cuando lo ejecutamos podemos ver:

El valor de retorno de la función es -1.

2.4 Resumen

        Para estas tres funciones, son similares a aquellas con longitud ilimitada, excepto que hay una restricción adicional. Esta restricción es la fuente restringida. En otras palabras, simplemente copie tantos números como sea posible, y el bucle interno se generará al encontrar ' \ El bucle while de 0 'se cambia a un bucle for y el juicio es i <num.

3. Funciones de cadena especiales

3.1 función strstr

        La función strstr es una función que busca subcadenas. Devuelve la posición donde aparece la primera cadena. Vayamos al sitio web de cplusplus para verla.

        Veamos el primero. Sus parámetros y valor de retorno se modifican con const. De hecho, ambos son iguales, pero el primero se modifica con const para que su valor no se pueda cambiar, lo cual es más seguro y evita modificaciones ilegales. . Tomemos un ejemplo para experimentar la aplicación de la función strstr, el código es el siguiente:

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcabcdefghigh";
	char brr[] = "abcd";
	char *crr=strstr(arr, brr);
	printf("%s", crr);
	return 0;
}

Cuando lo ejecutamos podemos ver:

Queremos simular la implementación, primero dibuje su idea:

        Es decir, str2 y str1 registran la posición, s1 y s2 se comparan, si no son iguales, str1 y s1 se mueven, si son iguales, str1 y str2 no se mueven, s1 y s2 se mueven, si son iguales, lo harán. apunte a str1 y str2 nuevamente, y luego realice un ciclo. Hasta que str1 encuentre '\0', la simulación se implementa de la siguiente manera:

#include <stdio.h>
char* my_strstr(char* arr, char* brr)
{
	char* str1 = arr, * s1 = arr, * str2 = brr, * s2 = brr;
	while (*str1)
	{
		if (*s2 == '\0')
		{
			return str1;
		}
		if (*s1 == *s2)
		{
			s1++;
			s2++;
		}
		else
		{
			str1++;
			s1 = str1;
			s2 = str2;
		}
	}
}
int main()
{
	char arr[] = "abcabcdef";
	char brr[] = "abcd";
	char* p = my_strstr(arr, brr);
	printf("%s", p);
	return 0;
}

3.2función strtok

        

        Podemos ver que el tipo de retorno de la función strtok es char*, y sus parámetros son, char * str, const char * delimitadores. Esta función corta cadenas y requiere dos cadenas. La segunda cadena aparece en la primera cadena. La cadena Se cortará y apuntará al primer carácter de este segmento. El código específico es el siguiente:

#include <string.h>
#include <stdio.h>
int main()
{
	char arr[] = "abc,abcd@efacd*add";
	char brr[] = ",@*";
	char* str = arr;
	for (str = strtok(arr, brr); str != NULL; str = strtok(NULL, brr))
	{
		printf("%s\n", str);
	}
	return 0;
}

Ese es el final del contenido de hoy, espero que puedas conectarte tres veces con un solo clic.

Supongo que te gusta

Origin blog.csdn.net/Infernal_Puppet/article/details/133439415
Recomendado
Clasificación