c语言中常用的字符串处理函数strlen函数,strcpy函数,strcat函数,strcmp函数总结。
strlen函数返回的是在字符串中的个数,但不包含字符串结束符’\0’
#include
#include
int main()
{char str1[] = "abcdef";printf("%ld\n", strlen(str1));return 0;
}
执行
```cpp
# gcc strlen.c -o strlen
./strlen
6
#include
#include
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;
}
执行
# gcc strlen.c -o strlen
./strlen
6
原型:
char *strcpy(char * destination, const char *source );
strcpy是覆盖拷贝,将source全覆盖拷贝到destination,会把’\0’也拷过去,estination的空间必须>=source的空间
#include
#include
int main()
{char p1[] = "abcde";char* p2 = "hello";strcpy(p1, p2);printf("%s\n", p1);printf("%s\n", p2);return 0;
}
执行
# gcc strcpy.c -o strcpy
# ./strcpy
hello
hello
#include
#include
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;
}
执行
$ gcc strcpy.c -o strcpy
$ ./strcpy
退出while循环,不执行*char1 = *char2; 没有赋值给char1结束符
hello
hello
原型:
char *strcat ( char * destination, const char * source );
strcat追加拷贝,追加到目标空间后面,目标空间必须足够大,能容纳下源字符串的内容
#include
#include
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
#include
#include
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;
}
执行
$ gcc strcat.c -o strcat
$ ./strcat
HelloWorld
原型
int strcmp ( const char * str1, const char * str2 );
strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCII码比较
规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
注意:strcmp函数比较两字符串的大小,和字符串本身长度无关
#include
#include
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 = -4printf(" %d\n", strcmp(p4,p3)); //ASCII 'a' - 'e' = 101 - 4 = -4printf(" %d\n", 'a');printf(" %d\n", 'e');}
}
执行
$ gcc strcmp.c -o strcmp
$ ./strcmp
----------------------0
-----------------------100100
-----------------------4497101
#include
#include
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');}
执行
$ gcc strcmp.c -o strcmp
$ ./strcmp
----------------------0
-----------------------100100
-----------------------4497101
下一篇:乐观锁和悲观锁区别