Resumen de funciones de procesamiento de cadenas comúnmente utilizadas en lenguaje c


prefacio

Resumen de las funciones de procesamiento de cadenas de uso común strlen function, strcpy function, strcat function y strcmp function en lenguaje c.


1. Uso de la función strlen

1. uso

La función strlen devuelve el número en la cadena, pero no incluye el terminador de cadena '\0'

#include<stdio.h>
#include<string.h>
int main()
{
    
    
        char str1[] = "abcdef";
        printf("%ld\n", strlen(str1));
        return 0;
}
执行
```cpp
# gcc strlen.c  -o strlen
./strlen
6

2. Método de implementación

#include<stdio.h>
#include<string.h>
size_t Strlen_char(const char* str1)
{
    
    
	size_t len = 0;
	while (*str1 != 0)
	{
    
    
		len++;
		str1++;
	}
	return len;
}
int main()
{
    
    
	char* str1 = "abcdef";
	printf("%ld\n", Strlen_char(str1));
	return 0;
}

implementar

# gcc strlen.c  -o strlen
./strlen
6

Dos, uso de la función strcpy

1. Uso

prototipo:

char *strcpy(char * destination, const char *source );

strcpy es una copia superpuesta, al copiar la cobertura completa del origen al destino también se copiará '\0', el espacio del destino debe ser >= el espacio del origen

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char p1[] = "abcde";
	char* p2  = "hello";
	strcpy(p1, p2);
	printf("%s\n", p1);
	printf("%s\n", p2);
	return 0;
}

implementar

# gcc strcpy.c  -o strcpy
#  ./strcpy
hello
hello

2. Método de implementación

#include<stdio.h>
#include<string.h>
void stringcpy(char* char1 , const char *char2){
    
    
	while(*char2){
    
    
		*char1 = *char2;
		char1++;
		char2++;
		//验证添加char1 = '\0';
		if(*char2=='\0'){
    
    
			printf("退出while循环,不执行*char1 = *char2; 没有赋值给char1结束符");
			printf("\n");
		}
	}
	*char1 = '\0';//添加char1 = '\0';
}

int main()
{
    
    
	char   str1[5] = "abcde";
	const char* p  = "hello";
	stringcpy(str1, p);
	printf("%s\n", str1);
	printf("%s\n", p);
	return 0;
}

implementar

$ gcc strcpy.c  -o strcpy
$ ./strcpy
退出while循环,不执行*char1 = *char2; 没有赋值给char1结束符
hello
hello

Tres, uso de la función strcat

1. Uso

prototipo:

char *strcat ( char * destination, const char * source );

strcat agregar copia, agregar al espacio de destino, el espacio de destino debe ser lo suficientemente grande como para acomodar el contenido de la cadena de origen

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char    p1[20] = "Hello";
	const char* p2 = "World";
	strcat(p1, p2);
	printf("%s\n",p1);
	return 0;
}

$ gcc strcat.c  -o strcat
$ ./strcat
HelloWorld

2. Método de implementación

#include<stdio.h>
#include<string.h>
void stringcat(char *str1,const char *str2){
    
    
	while(*str1){
    
    
		str1++;
	}//str1结束循环,当前是str1的存放值是'\0'
	if(*str1=='\0'){
    
    
		while(*str2){
    
    
		*str1 = *str2;//str2的首个字符 W,替换赋值当前是str1的存放值是'\0'
		str1++;
		str2++;
	    }
	   str1='\0';	
	}
}
int main()
{
    
    
	char    p1[20] = "Hello";
	const char* p2 = "World";
	stringcat(p1, p2);
	printf("%s\n",p1);
	return 0;
}

implementar


$ gcc strcat.c  -o strcat
$ ./strcat
HelloWorld

Cuatro, uso de la función strcmp

prototipo

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

strcmp compara el tamaño de dos cadenas, carácter por carácter, y compara de acuerdo con el código ASCII.
La regla:
la primera cadena es mayor que la segunda cadena, luego devuelve un número mayor que 0.
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

Nota: La función strcmp compara el tamaño de dos cadenas, independientemente de la longitud de la propia cadena.

1. Uso

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char* p1 = "abc";
	char* p2 = "abc";
	char* p3 = "abcd";
	char* p4 = "e";
	printf("----------------------\n");
	printf("           %d\n", strcmp(p1,p2 ));
  	printf("----------------------\n");
	printf("           %d\n", strcmp(p2,p3));  
	printf("           %d\n", strcmp(p3,p2)); 
	printf("----------------------\n");
	printf("           %d\n", strcmp(p3,p4));//ASCII   'a' - 'e' =  97 - 101 = -4
	printf("           %d\n", strcmp(p4,p3)); //ASCII  'a' - 'e' =  101 - 4  = -4
	printf("           %d\n", 'a');
	printf("           %d\n", 'e');

} 
}

implementar

$ gcc strcmp.c  -o strcmp
$ ./strcmp
----------------------
           0
----------------------
           -100
           100
----------------------
           -4
           4
           97
           101

2. Método de implementación

#include<stdio.h>
#include<string.h>
int Strintcmp(const char * str1, const char * str2)
{
    
    
    //1、两个不同的字符串比较时,直接 return (*str1-*str2);//返回两字符相减的ASCII码值
	//2、字符串相同时进入while循环,字符串结束符是'\0',添加一个循环的结束条件!(*str1|*str2)=='\0')
	while ((*str1 == *str2)&&(!(*str1|*str2)=='\0')){
    
    
		str1++;
		str2++;
	}
  return (*str1-*str2);//返回两字符相减的ASCII码值
}

int main()
{
    
    
	char* p1 = "abc";
	char* p2 = "abc";
	char* p3 = "abcd";
	char* p4 = "e";
	printf("----------------------\n");
	printf("           %d\n", Strintcmp(p1,p2 ));
  	printf("----------------------\n");
	printf("           %d\n", Strintcmp(p2,p3));  
	printf("           %d\n", Strintcmp(p3,p2)); 
	printf("----------------------\n");
	printf("           %d\n", Strintcmp(p3,p4));  
	printf("           %d\n", Strintcmp(p4,p3)); 
	printf("           %d\n", 'a');
	printf("           %d\n", 'e');

} 

implementar

$ gcc strcmp.c  -o strcmp
$ ./strcmp
----------------------
           0
----------------------
           -100
           100
----------------------
           -4
           4
           97
           101

Supongo que te gusta

Origin blog.csdn.net/qq_38312843/article/details/128137177
Recomendado
Clasificación