Funciones de caracteres del lenguaje C y funciones de cadena

El lenguaje C en sí mismo no tiene un tipo de cadena, pero en el lenguaje C, las operaciones sobre cadenas son muy frecuentes. En C, las cadenas suelen estar en matrices de caracteres o cadenas constantes. bajo. Vamos a presentar algunas funciones de uso común para cadenas.

Uno, clase de personaje

Para los caracteres, a menudo se encuentra para determinar si un carácter está en minúsculas, determinar si un carácter está en mayúsculas, determinar si un carácter es un número y convertir letras minúsculas en mayúsculas y letras mayúsculas en minúsculas.

1, función isdigit

La función isdigit se usa para determinar si es decimal 0~9, y el archivo de encabezado es ctype.h. En caso afirmativo, devuelva 0.

#include<stdio.h>
#include<ctype.h>

int main(void)
{
	int a = 10;
	if (isdigit(a) == 0)
	{
		printf("是数字!");//将会打印结果。
	} 
	return 0;
}

2, función islower && función isupper && función isalpha && función isalnum

La función islower se utiliza para determinar si se trata de una letra minúscula a~z. El archivo de encabezado es ctype.h. Si es así, devuelva un número distinto de cero.

La función isupper se usa para determinar si es una letra mayúscula a~z. El archivo de encabezado es ctype.h. Si es así, devuelva un número distinto de cero.

La función isalpha se usa para juzgar si se trata de las letras a~z, A~Z. El archivo de encabezado es ctype.h. Si es así, devuelva un número distinto de cero.

La función isalnum se utiliza para determinar si es una letra o un número. El archivo de encabezado es ctype.h. Si es así, devuelva un número distinto de cero.

#include<stdio.h>
#include<ctype.h>

int main(void)
{
	char a = 'e';
	if (islower(a))
	{
		printf("是小写字母!");//将会打印出结果
	}
	return 0;
}
#include<stdio.h>
#include<ctype.h>

int main(void)
{
	char a = 'E';
	if (isupper(a))
	{
		printf("是大写字母!");//将会打印出结果
	}
	return 0;
}
#include<stdio.h>
#include<ctype.h>

int main(void)
{
	char a = 'E';
	if (isalpha(a))
	{
		printf("是字母!");//将会打印出结果
	}
	return 0;
}
#include<stdio.h>
#include<ctype.h>

int main(void)
{
	char a = 'e';
	if (isalnum(a))
	{
		printf("是字母或数字!\n");//将会打印出结果
	}
	return 0;
}

3, función inferior y función superior

La función tolower convierte las letras mayúsculas en minúsculas. El archivo de encabezado es ctype.h.

La función toupper convierte las letras minúsculas en letras mayúsculas. El archivo de encabezado es ctype.h.

#include<stdio.h>
#include<ctype.h>

int main(void)
{
	char a = 'E';
	printf("%c\n", tolower(a));//e
	return 0;
}
#include<stdio.h>
#include<ctype.h>

int main(void)
{
	char a = 'e';
	printf("%c\n", toupper(a));//E
	return 0;
}

En segundo lugar, la clase de cadena

Los archivos de encabezado de función de clase de cadena son todos string.h.

1, función de aceleración

La función strlen se usa para encontrar la longitud de una cadena.

size_t strlen (const char * str);

La cadena termina con '\0' y la función strlen devuelve el número de caracteres (excluyendo '\0') que aparecen antes de '\0' en la cadena. 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 (propenso a errores).

#include<stdio.h>
#include<string.h>

int main(void)
{
	char* a = "abcdef";
	printf("%d\n", strlen(a));//6
	return 0;

2, función strcpy && función strncpy

La función strcpy se usa para copiar cadenas.

La diferencia entre la función strncpy y es que esta función puede copiar de acuerdo con la longitud especificada.

char* strcpy(char * destino(cadena de destino), const char * fuente(cadena de origen));

char * strncpy (char * destino, const char * fuente, size_t num);

La cadena de origen debe terminar con '\0'. Esta función copiará el '\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 de destino debe ser mutable. 

int main(void)
{
	char a[] = "abcdef";
	char b[20] = { 0 };
	strcpy(b, a);
	printf("%s\n", b);//abcdef
	return 0;
}
int main(void)
{
	char a[] = "abcdef";
	char b[20] = { 0 };
	strncpy(b, a, 2);
	printf("%s\n", b);//ab
	return 0;
}

3, función strcat y función strncat

La función strcat se utiliza para concatenar cadenas.

La función strncat puede seguir la conexión especificada.

char * strcat (char * destino, const char * fuente);

char * strncat (char * destino, const char * fuente, size_t num); 

La cadena de origen debe terminar con '\0'. Esta función copiará el '\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 de destino debe ser mutable. 

#include<stdio.h>
#include<string.h>

int main(void)
{
	char a[] = "abcdef";
	char b[20] = { 'a', 'a', 'a'};
	strcat(b, a);
	printf("%s\n", b);//aaaabcdef
	return 0;
}
int main(void)
{
	char a[] = "abcdef";
	char b[20] = { 'a', 'a', 'a' };
	strncat(b, a, 2);
	printf("%s\n", b);//aaaab
	return 0;
}

4, función strcmp y función strncmp

La función strcmp se usa para comparar cadenas.

La función strncmp es comparar hasta que otro carácter sea diferente o se compare el final de una cadena o todos los caracteres numéricos.

int strcmp (const char * str1, const char * str2);

int strncmp (const char * str1, const char * str2, size_t num);

regulación estándar:

        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

Esta comparación no compara la longitud de la cadena, sino el valor ASCII de cada letra de la cadena.

#include<stdio.h>
#include<string.h>

int main(void)
{
	char a[] = "abcdef";
	char b[20] = "bcdef";
	int ret = strcmp(a, b);
	printf("%d\n", ret);//-1
	return 0;
}

Si se compara la longitud, el valor devuelto debe ser un número mayor que 0 y el resultado es un número menor que 0, lo que significa que esta función no compara la longitud de la cadena, sino el valor del código ASCII. El valor ASCII de a es 97 y b es 98, por lo que el resultado es -1;

int main(void)
{
	char a[] = "abcdef";
	char b[] = "abcdef";
	int ret = strncmp(a, b, 2);
	printf("%d\n", ret);//0
	return 0;
}

5, función strstr

La función strstr se utiliza para determinar si existe una cadena en la cadena principal (coincidencia de cadenas). Si la coincidencia tiene éxito, un puntero a la posición de la primera aparición en la cadena. Devuelve la cadena principal si es una subcadena vacía; de lo contrario, devuelve NULL.

char * strstr (const char *str2, const char * str1);

int main(void)
{
	char a[] = "abcdef";
	char b[20] = "def";
	char* ret = strstr(a, b);
	printf("%s\n", ret);//def
	return 0;
}

6, función strtok

La función strtok divide la cadena según ciertos delimitadores.

char * strtok ( char * str, const char * sep );

        El parámetro sep es una cadena que define el conjunto de caracteres que se usarán como separadores. El primer parámetro especifica una cadena que contiene cero o más tokens separados por uno o más delimitadores en la cadena de separación. La función strtok encuentra el siguiente token en str, lo termina con \0 y devuelve un puntero a este token. (Nota: la función strtok cambiará la cadena que se está manipulando, por lo que la cadena segmentada por la función strtok generalmente es el contenido de una copia temporal y se puede modificar).

        Si el primer argumento de la función strtok no es NULL, la función encontrará el primer token en str y la función strtok guardará su posición en la cadena. El primer parámetro de la función strtok es NULL, y la función comenzará en la posición guardada en la misma cadena y buscará el siguiente token. Si no hay más tokens en la cadena, se devuelve un puntero NULL. En pocas palabras, por ejemplo: 123@456#, después de que esta función divide 123 por primera vez, la dirección después de 123 de la cadena se reserva y, al mismo tiempo, 123 se establece en vacío. La próxima vez es comenzar desde NULL, después de dividir 456, realizar operaciones similares y devolver NULL hasta que se complete la división.

#include<stdio.h>
#include<string.h>

int main(void)
{
	char* a = "hello@world#.my&dream";
	char* str = NULL;
	char b[40] = { 0 };
	strcpy(b, a);/临时拷贝
	for (str = strtok(b, "@#."); str != NULL; str = strtok(NULL, "@#.&"))
	{
		printf("%s\n", str);//-1
	}
	
	return 0;
}

 7, función strerror (entender)

Devuelve el código de error y el mensaje de error correspondiente. El archivo de encabezado es errno.h.

char * strerror ( int errnum );

 3. Otros tipos

Las funciones anteriores solo son válidas para cadenas. Si int y otros tipos quieren realizar operaciones como copiar y concatenar, ¿hay alguna función para ellos? La respuesta es sí. Estas funciones se denominan funciones de memoria. Mientras esté en la memoria, se puede operar. A continuación, presentamos tres funciones de operación de memoria, que se utilizan para copiar, copiar y comparar. Cabe señalar que en los parámetros de estas funciones, la unidad de num es bytes.

1, función memcpy

void * memcpy ( void * destino, const void * origen, size_t num );

La función memcpy comienza desde la ubicación de origen y copia números de bytes de datos hacia atrás a la ubicación de memoria de destino. Esta función no se detiene cuando encuentra '\0'.

int main(void)
{
	int a[10] = { 0 };
	int b[10] = { 1,2,3,4,5,6,7,8,9,0 };

	memcpy(a, b, 10 * sizeof(b[0]));
	for (int i = 0; i < 10; ++i)
	{
		printf("%d ", a[i]);//1 2 3 4 5 6 7 8 9 0
	}
	return 0;
}

2, la función de memoria

void * memmove ( void * destino, const void * origen, size_t num );

La diferencia con memcpy es que el bloque de memoria de origen y el bloque de memoria de destino procesados ​​por la función memmove pueden superponerse. Si el espacio de origen y el espacio de destino se superponen, debe usar la función memmove para solucionarlo.

int main()
{
	char str[] = "memmove can be very useful......";
	memmove(str + 20, str + 15, 11);
	puts(str);//memmove can be very very useful.
	return 0;
}

3, función memcmp

int memcmp (const void * ptr1, const void * ptr2, size_t num);

El valor de retorno es el mismo que el de la función strcmp.

int main()
{
	int a[10] = { 1,2,3,4,5 };
	int b[10] = { 1,2,5,7,9 };
	int ret = memcmp(a, b, 2 * sizeof(a[0]));
	printf("%d\n", ret);//0
	return 0;
}

   

Supongo que te gusta

Origin blog.csdn.net/Naion/article/details/122624356
Recomendado
Clasificación