1.使用C语言完成strcpy函数
#include<stdio.h> #include<assert.h> #include<string.h> char *Strcpy(char *dest,const char *src) { assert((src == NULL)||(dest == NULL) 错误的示范//if((src == NULL)||(dest == NULL))
return NULL; //对函数的参数进行检查时需要使用assert函数
if(dest == src)//如果AB串已经是相同的了 return dest; char *addr = dest; while(*src != '\0') //或者使用while((*dest++=*src++)'\0'); { 注意这样使用 就已经在dest串的结尾加上了\0 *dest = *src; dest++; src++; } *dest = '\0';//当所有的字符都已经赋值就在最后面位置加上\0 return addr; }
//既然已经实现了拷贝 为什么要返回一个char *的指针 //主要是为了实现链式调用 例如这种情况 Strcpy(Dest,Strcpy(Dest1,Src))
int main() { char arr1[] = "hello linux"; char arr2[] = "xiao zou"; printf("before arr1 =%s\n",arr1); printf("before arr 2=%s\n",arr2); Strcpy(arr1,arr2); printf("after arr1 = %s\n",arr1); }
运行结果:
2.使用C语言完成字符串大小写交换
#include <stdio.h> #include <string.h> #include <stdlib.h> char *ctoC(char *str) { assert(str==NULL) return NULL; char *res = str; while(*str!='\0') { if(*str>='a' &&*str<='z')//当首字符是a-z *str-=32; else if(*str>='A' &&*str<='Z') *str+=32; *str++; //指针向后移动 } return res; } int main() { char buf[10]; scanf("%s",buf); char *buf1 = ctoC(buf); printf("res = %s\n",buf1); }
运行结果: