Directorio de artículos
Prefacio
A continuación, les presentaré la implementación de algunas funciones de cadena.
Primero, el problema de la cuerda para zurdos
Ejemplo: cdefab es zurdo por abcdef.
El código es el siguiente (ejemplo):
#include<stdio.h>
#include<string.h>
int left_move(char *str1,char *str2)
{
int len1 = strlen(str1);
int len2 = strlen(str2);
if(len1 != len2)//二个字符串长度不相等,那么它就不是旋转的来,直接就返回0
{
return 0;
}
strncat(str1,str2,6);
char *ret = strstr(str1,str2);
if(ret == NULL)
{
return 0;
}
else
{
return 1;
}
}
int main(void)
{
char arr1[] = "abcdef";
char arr2[] = "cdefab";
int ret = left_move(arr1,arr2);
if(ret == 1)
{
printf("YES");
}
else
{
printf("NO");
}
return 0;
}
Idea: Una vez que la cadena se agrega a sí misma, se convierte en abcdefabcedf, y luego strstr se usa para determinar si cdefad es una subcadena de la cadena cambiada.
Nota: Strcat no puede agregar cadenas a sí mismo en Visual Studio, pero puede hacerlo en dev c ++.
Para estar seguro, agregue la longitud de la cadena después de strncat.
En segundo lugar, la realización de la función strlen
Prototipo de función:
size_t __cdecl strlen(const char *_Str);
El código es el siguiente (ejemplo):
#include<stdio.h>
int my_strlen(char *str)
{
int count = 0;
while(*str !='\0')
{
count++;
str++;//str++意思是它的地址加一,找到下一个字符的地址。
}
return count;
}
int main(void)
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d",len);
strlen
}
Tres, la realización de la función strcpy
Prototipo de función:
char * __cdecl strcpy(char * __restrict__ _Dest,const char * __restrict__ _Source);
El código es el siguiente (ejemplo):
#include<stdio.h>
#include<assert.h>
char *my_strcpy(char *dest,char *src)
{
assert(dest != NULL && src != NULL);//保证传递进来的二个指针都不为空
char *ret = dest;
while(*src !='\0')//while循环里可简写成while(*dest++ == *src++)
{
*dest = *src;
dest++;
src++;
}
*dest = *src;//把src最后的'\0'拷贝到dest。
return ret;
}
int main(void)
{
char arr1[] = "abcedf";
char arr2[] = "bit";
my_strcpy(arr1,arr2);
printf("%s",arr1);
}
Cuarto, la realización de la función strcat.
Prototipo de función:
char * __cdecl strcat(char * __restrict__ _Dest,const char * __restrict__ _Source);
El código es el siguiente (ejemplo):
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest,char* src)
{
assert(dest != NULL);
assert(src != NULL);
char* ret = dest;
while(*dest != '\0')//先找到目的地字符串的'\0',然后将src拷贝到dest。
{
dest++;
}
while(*src !='\0')//while循环里可简写成while(*dest++ == *src++)
{
*dest = *src;
dest++;
src++;
}
*dest = *src;//把src最后的'\0'拷贝到dest。
return ret;
}
int main(void)
{
char arr1[] = "abc";
char arr2[] = "def";
my_strcat(arr1,arr2);
printf("%s",arr1);
}
Cinco, la realización de la función strcmp
Prototipo de función:
int __cdecl strcmp(const char *_Str1,const char *_Str2);
El código es el siguiente (ejemplo):
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* dest,const char* src)
{
assert(dest && src);
while(*dest == *src)
{
dest++;
src++;
}
if(*dest>*src)
{
return 1;
}
else if (*dest<*src)
{
return -1;
}
else
{
return 0;
}
}
int main(void)
{
char arr1[] = "abcdef";
char arr2[] = "abcdez";
int ret = my_strcmp(arr1,arr2);
if(ret == 1)
{
printf("字符串1大于字符串2。");
}
if(ret == -1)
{
printf("字符串1小于字符串2。");
}
if(ret == 0)
{
printf("字符串1等于字符串2。");
}
}
para resumir
De lo anterior es de lo que vamos a hablar hoy Este artículo solo presenta brevemente el uso de algunas funciones de manipulación de cadenas, y hay muchas funciones que se pueden encontrar y usar en cplusplus.