C語言面試高頻問題:自己程式碼實現字串相關的常用API

2020-08-08 13:31:33

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;
	}
}