🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 去除字符串首尾空格 ~~~ #include <stdio.h> #include <mhash.h> char *removeSpace(char *arr) { //char temp[100] char *start = arr; //字符串有效长度需要-1为数组元素下标 //起始位置加上长度-1 char *end = arr + strlen(arr) - 1; //从最后开始不断的缩小长度 while (*end == ' ' && end > start) { end--; } //变为字符串,并且改变指针对应的值 *(end + 1) = '\0'; while (*start == ' ' && start < end) { start++; } return start; } int main() { char arr[] = " 你好 "; char *p = removeSpace(arr); printf("%s\n", p); getchar(); return EXIT_SUCCESS; } ~~~ # 函数返回值是指针 ~~~ char *test() { //字符数组,创建位置在栈区 // char arr[] = "hello world"; //字符串常量,会在程序运行时,常量区,不能被修改的,在程序结束时,销毁 char * arr = "hello world"; return arr; } int main() { char * p = test(); printf("%p\n", p); printf("%s\n", p); getchar(); return EXIT_SUCCESS; } ~~~ # 自定义strstr ~~~ char *mystrstr(char *dest, char *src) { char *p = NULL; char *temp = src; //目标值存在 while (*dest) { //首字母复制给他 p = dest; //匹配个数 = 字符串长度 while (*dest == *temp && *dest) { //指针++ dest++; temp++; } if (!*temp) { //\0 return p; } else { temp = src; } dest = p; dest++; } return NULL; } int main() { char *p = mystrstr("helllllo", "lllllo"); printf("%s\n", p); getchar(); return EXIT_SUCCESS; } ~~~ # 字符串常量 ~~~ int main() { //字符串常量是一个常量的数组 可以读取字符或者字符串 但是不能修改 char * arr = "hello world"; //常量区 char arr1[] = "hello world"; //栈区 printf("%s\n", arr); printf("%c\n", arr[0]); getchar(); return EXIT_SUCCESS; } ~~~ # 自定义strcat ~~~ void mystrcat(char *arr, char *s1) { //指针偏移到末尾 while (*arr) { arr++; } //循环这个指针 while (*s1) { //指针指向的值依次赋值上 *arr = *s1; //指针偏移 arr++; s1++; } //最后变为字符串 *arr = '\0'; } int main() { char arr[100] = "hello"; char *s1 = "world"; mystrcat(arr, s1); printf("%s\n", arr); getchar(); return EXIT_SUCCESS; } ~~~