参考:C语言面试高频问题:自己代码实现字符串相关的常用API
作者:图触靓
发布时间: 2020-08-08 13:31:33
网址:https://blog.csdn.net/bhbhhyg/article/details/107878102
目录
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;
}
}
以上仅是个人思路,并非算法最优