赞
踩
1.1 库函数strcpy的使用
在函数strcpy中,函数的返回类型为char* ,参数部分首先是指向目标地址的指针,其次是指向源地址的指针(由于源地址中内容不受影响,则可以使用const修饰),函数所需的头文件为string.h
1.2 库函数strncpy的使用
strncpy函数在strcpy函数基础上加入了一个参数,表示复制到目标地址去的个数
1.3 模拟实现strcpy及strncpy
模拟实现库函数strcpy
- #include<stdio.h>
- char* my_strcpy(char* b,const char* a){
- char* tmp = b;
- while(*a){
- *b = *a;
- a++;
- b++;
- }
- return tmp;
- }
- int main(){
- char a[20] = "abcd";
- char b[20];
- char c[20];
- printf("b[] = %s\n",my_strcpy(b,a));
- printf("c[] = %s\n",my_strcpy(c,"dsda"));
- return 0;
- }
模拟实现库函数strncpy
- #include<stdio.h>
- char* my_strncpy(char* b,const char* a,int c){
- int count = 0;
- char* tmp = b;
- while(count < c){ //for(int count=0;count<c;a++,b++,count++){
- *b = *a; // *b = *a;
- a++; // }
- b++;
- count++;
- }
- return tmp;
- }
- int main(){
- char a[20] = "abcd";
- char b[20];
- char c[20];
- printf("b[] = %s\n",my_strncpy(b,a,3));
- printf("c[] = %s\n",my_strncpy(c,"sdas",2));
- return 0;
- }
2.1 库函数strcmp的使用
函数的返回类型为int,所需的头文件为string.h
比较规则:
2.2 库函数strncmp的使用
2.3 模拟实现strcmp及strncmp
模拟实现库函数strcmp
- #include<stdio.h>
- int my_strcmp(const char* a,const char* b){
- while(*a || *b){
- if(*a > *b){
- return 1;
- }else if(*a < *b){
- return -1;
- }
- a++;
- b++;
- }
- return 0;
- }
- int main(){
- char a[20] = "abcd";
- char b[20] = "abdd";
- int tmp = my_strcmp(a,b);
- printf("%d\n",tmp);
- tmp = my_strcmp(b,a);
- printf("%d\n",tmp);
- tmp = my_strcmp(a,a);
- printf("%d\n",tmp);
- return 0;
- }
模拟实现库函数strncmp
- #include<stdio.h>
- int my_strncmp(const char* a,const char* b,int c){
- int count = 0;
- while((*a || *b) && count < c){
- if(*a > *b){
- return 1;
- }else if(*a < *b){
- return -1;
- }
- a++;
- b++;
- count++;
- }
- return 0;
- }
- int main(){
- char a[20] = "abcd";
- char b[20] = "abdd";
- int tmp = my_strncmp(a,b,3);
- printf("%d\n",tmp);
- tmp = my_strncmp(a,b,2);
- printf("%d\n",tmp);
- return 0;
- }
3.1 库函数strtok的使用
函数返回类型为char* ,首个参数为被切割的字符串,其次是切割字符串的分割符。
strtok函数会改变被操作的字符串,所以在使用strtok函数时一般要先临时拷贝一份
- #include<stdio.h>
- #include<string.h>
- int main(){
- char a[20] = "abcd#abc^ab#a";
- char* p = NULL;
- p = strtok(a,"#^"); //首次调用时,函数找到第一个标记并记录在字符串中的位置,并将其改为\0
- while(p != NULL){
- printf("%s\n",p);
- p = strtok(NULL,"#^"); //函数在同一字符串中的保存位置开始查找
- }
- return 0;
- }
- #include<stdio.h>
- #include<string.h>
- int main(){
- char a[20] = "abcd#abc^ab#a";
- char* p = NULL;
- for(p = strtok(a,"#^");p != NULL;p = strtok(NULL,"#^")){
- printf("%s\n",p);
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。