赞
踩
目录
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数.
字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数。
拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完原字符串之后,
在目标的后边追加0,直到num个。
- #include<stdio.h>
- #include<assert.h>
- char* my_strncpy(char* str1, const char* str2, int nums)
- {
- assert(str1 && str2);
- char* ret = str1;
- while (nums)//把str2拷贝到str1,剩余\0没拷贝
- {
- *str1++ = *str2++;
- nums--;
- }
- if (nums > 0)
- {
- while (--nums)//拷贝/0
- {
- *str1++ = '\0';
- }
- }
- return ret;
- }
- int main()
- {
- char arr1[20] = "############";
- char arr2[] = "bit education";
- my_strncpy(arr1, arr2, 4);
- printf("%s\n", arr1);
-
- return 0;
- }
追加num个字符从源字符串到目标空间
如果源字符串的长度小于num,追加完之后也会把\0追加过去,但如果字符不够不会补齐\0
- #include<stdio.h>
- #include<assert.h>
- char* my_strncat(char* str1, const char* str2, int num)
- {
- char* ret = str1;
- assert(str1 && str2);
- while (*str1)
- {
- str1++;
- }
- while (num--)
- {
- if ((*str1++ = *str2++) == 0)
- {
- return ret;
- }
-
- }
- *str1 = '\0';
- return ret;
- }
- int main()
- {
- char arr1[20] = "hello";
- char arr2[] = "world";
- my_strncat(arr1, arr2, 4);
- printf("%s\n", arr1);
-
- return 0;
- }
比较到出现另一个字符不一样或者一个字符串结束或者num个字符全部比较完
返回一个指针中str2在str1第一次出现的位置
- #include<stdio.h>
- #include<assert.h>
-
- char* my_strstr(const char* str1, const char* str2 )
- {
- assert(str1 && str2);
- const char* s1 = NULL;
- const char* s2 = NULL;
- char* ret = str1;
- while (*ret)
- {
- s1 = ret;
- s2 = str2;
-
- while (*s1 && *s2 && (*s1 == *s2))
- {
-
- s1++;
- s2++;
- if (*s2 == '\0')
- {
- return ret;
- }
- }
- ret++;
- }
- return NULL;
- }
- int main()
- {
- char arr1[20] = "abbbcdef";
- char arr2[] = "bbc";
- char* ret = my_strstr(arr1, arr2);
- if (ret != NULL)
- {
- printf("找到了:>%s\n", ret);
- }
- else
- {
- printf("查找的字符串找不到\n");
- }
-
- return 0;
- }
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标 记。strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串 中的位置。 strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标 记。 如果字符串中不存在更多的标记,则返回 NULL 指针。
- #include<stdio.h>
-
-
-
- int main()
- {
- char arr1[20] = "abb@bc.def";
- char arr2[20] = { 0 };
- char *p = "@.";
- strcpy(arr2, arr1);
- /*printf("%s\n", strtok(arr2, p));
- printf("%s\n", strtok(NULL, p));
- printf("%s\n", strtok(NULL, p));*/
- char* ret = NULL;
- for (ret = strtok(arr2, p); ret != NULL; strtok(NULL, p))
- {
- printf("%s\n", ret);
- }
- //第一次穿非空指针,第二次传空指针
- //strtok函数的第一个参数不为NULL,函数将找到arr2中的第一个标记,strtok函数将保存他在字符串中的位置。
- //strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
- return 0;
- }
返回错误码,所对应的错误信息。
- #include<stdio.h>
- #include<string.h>
- #include<errno.h>
-
- //int errno;//全局错误码,存放错误信息的变量
- int main()
- {
- FILE* pf = fopen("test.txt", "r");//打开文件失败返回NULL
- if (pf == NULL)
- {
- printf("%s\n", strerror(errno));
- }
- return 0;
- }
本文仅仅简单的介绍了常用字符串函数的使用,C语言给我们提供了大量能使我们方便快捷的处理数据的函数和方法,我们要更加深入的了解,自己学会怎么看怎么使用不认识的库函数,另外,文章如果有任何问题,欢迎大佬提出疑问。我会虚心学习和改正,最重要的是能共同进步,共同成长,学好编程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。