参考:C语言面试高频问题:自己代码实现字符串相关的常用API
作者:图触靓
发布时间: 2020-08-08 13:31:33
网址:https://blog.csdn.net/bhbhhyg/article/details/107878102
目录
- 1、实现get(char *);从键盘获取字符串
- 2、实现put(char *);输出字符串
- 3、实现strlen(char *);求字符串长度
- 4、实现strcpy(char *,char *);拷贝str2的内容到str1;
- 5、实现strcat(char *,char *);合并字符串,把str2的内容合并到str1的后面
- 6、实现strcmp(char *,char*)比较字符串大小,若两字符串内容完全相同,返回0,若str1比str2长返回1,str1比str2短则返回-1,长度相同内容不同也返回-1
1、实现get(char *);从键盘获取字符串
void myget(char *str)
{ while(1){ scanf("%c",str);if(*str=='\n'){ *str='\0';return;}str++;}
}
2、实现put(char *);输出字符串
void myput(char *str)
{while(*str!='\0'){printf("%c",*str++);}printf("\n");return;
}
3、实现strlen(char *);求字符串长度
int mystrlen(char *str)
{ int len=0;while(1){if(*str=='\0'){return len;}str++;len++;}}
4、实现strcpy(char *,char *);拷贝str2的内容到str1;
void mystrcpy(char * str1,char * str2)
{while(*str2!='\0'){*str1=*str2;str1++;str2++;}
}
5、实现strcat(char *,char *);合并字符串,把str2的内容合并到str1的后面
void mystrcat(char *str1,char *str2)
{while(*str1!='\0'){str1++;}while(*str2!='\0'){*str1=*str2;str2++;str1++;}return;}
6、实现strcmp(char ,char)比较字符串大小,若两字符串内容完全相同,返回0,若str1比str2长返回1,str1比str2短则返回-1,长度相同内容不同也返回-1
int mystrcmp(char *str1,char *str2)
{ int str1len=0;int str2len=0;while(*str1!='\0') {str1++;str1len++;}while(*str2!='\0') {str2++;str2len++;}if(str1len-str2len==0){for(int i=0;i<str1len;i++){if(*str1==*str2){str1--;str2--;}else{return -1;}}return 0;}else if(str1len-str2len>0){return 1;}else {return -1;}
}
以上仅是个人思路,并非算法最优