亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言模擬實現strcpy函數,strcat函數,strcmp函數

發布時間:2020-05-30 14:05:32 來源:網絡 閱讀:1894 作者:檸檬dream 欄目:編程語言

 字符串作為C語言中比較重要的一部分,學好這一部分需要我們多理解.分析。我們在學習的過程中先在腦海中有一個清晰的思路,根據這個思路在電腦上敲出來。剛開始學習字符串敲出來會有很多錯誤,我們不要因此而放棄,記得之前一個學長說過找錯誤是一個程序員最快樂的,找出錯誤修改后我們就會有深刻的印象,慢慢的我們的錯誤會越來越少。想成為一名優秀的程序員,我們必須有耐心,剛開始錯誤再多,我們都認真對待不放過一個,慢慢的錯誤會越來越少。

  我覺得我學習編程,敲代碼時最開心的事情就是找到錯誤處并且修改成功。這樣在以后敲的過程中就很少在相同的地方出錯。這是我自己學習編程的一些方法,希望分享出來我們可以一起學習,不好的希望你們在評論中留言哦!

 接下來我想分享的是我學習strcpy,strncpy,strcat,strncat,strcmp的一些思路和方法。

 先說說strcpy,strncpy。

 在main函數中先定義兩個字符串數組char dest[10];char src[]="abcdef";將src中的字符串拷貝到dest中。用調用函數的方法實現,在main函數中傳入兩個數組,在調用函數中用指針來接收,char* dest,char* src.在調用函數中定義一個指針p指向dest,char* p=dest,斷言一下dest和src是否存在,如果存在,當src中的內容!="\0"時,將src中的內容拷貝給dest,并且同時dest的地址加加,src的地址加加。最后返回P。

#include <stdio.h>
#include <string.h>
#include <assert.h>

char *my_strcpy(char *dest, const char *src)
{
	char *p = dest; 
	assert(dest);
	assert(src);
	/*while (*dest++ = *src++)
	{
		;
	}*/
	while(*src != '\0')
	{
		*dest = *src;
		src++;
		dest++;    
	}
	*dest = *src;
	return p;
}

int main()
{
	char dest[10];
	char src[] = "asdfg";
	char *ret = my_strcpy(dest,src);
	puts(ret);
	return 0;
}

 同理strncpy跟strcpy的拷貝方法是類似的,只不過是將字符串中的前幾個拷貝給另一個數組。

#include <stdio.h>
#include <string.h>
#include <assert.h>
char *my_strncpy(char *Asd,const char *Qwe,int len)
{
	char *p=Asd;
	assert(Asd);
	assert(Qwe);
    while(len)
		{
			*Asd=*Qwe;
			Asd++;
			Qwe++;
			len--;
		}
	*Asd='\0';
	return p;
}
int main()
{
	char Asd[12];
	char Qwe[]="zxcrftgytuyji";
	char *ret=my_strncpy(Asd,Qwe,3);
    puts(ret);
	return 0;
}

 strcat和strncat的思路;

 strcat是實現兩個字符串的連接,我們要實現兩個字符串的連接,先定義一個指針qwe指向被連接字符串數組的首地址,當指針指向的內容不為"\0"時,指針指向的地址加加,當指針指向的內容為"\0"時,將另一個數組的指針iop指向的內容賦給qwe指針指向的內容,qwe指針指向的地址加加,iop指針指向的地址加加。當指針iop指向的內容為"\0"時,循環結束。將"\0"賦給指針qwe 指向的內容。

#include <stdio.h.h>
#include <string.h>
#include <assert.h>
char *my_strcat(char *qwe,const char *iop)
{
	char *a=qwe;
	assert(qwe);
	assert(iop);
	while (*qwe!='\0')
	{
		qwe++;
	}
	while (*iop!='\0')
	{
		*qwe=*iop;
		qwe++;
		iop++;
	}
	*qwe=*iop;
	return a;
}
int main()
{
	char qwe[10]="asdfg";
	char zxc[]="iop";//*zxc="iop"    
	char *ret=my_strcat(qwe,zxc);
	puts(ret);
	return 0;
}

同理strncat連接的方法與strcat時相似的,strncat是將自身數組的前n個連接上去。

#include<stdio.h>
#include<string.h>
#include<assert.h>
char *my_strncat(char *dest,const char *str,int n)
{
	char *p=dest;
	assert(dest);
	assert(str);
	while(*dest!='\0')
	{
		dest++;
	}
	while(n)
	{
		*dest=*str;
		dest++;
		str++;
		n--;
	}
	*dest='\0';
	return p;
}
int main()
{
	char Qwe[15]="asdfgh";
	char Zxc[]="qwert";
	char *ret=my_strncat(Qwe,Zxc,3);
	puts(ret);
	return 0;
}

strcmp是比較兩個字符串的大小;

  我的思路是在main函數中定義兩個字符串數組,char rty[]="abcdefg"; char cvb[]="abcedfg";為了看起來簡單清晰,可以使用調用函數,在main函數中傳入實參,調用函數函數中用指針來接收,const char* rty,const char *cvb,注意指針最好用const保護起來,這樣指針不容易被破壞,在使用指針之前斷言一下指針是否存在,如果存在,創造一個循環,進入循環,當指針rty與cvb指向的內容相等時循環結束,不相等時進入循環,在循環中如果指針rty指向的內容為"\0"時,循環結束return,否則指針rty與指針cvb指向的地址加加再進行比較。當兩指針指向的內容不相等時循環結束,返回值為兩指針指向的內容相減,如果值大于零,rty>cvb,如果值小于零,rty<cvb,否則兩字符串相等。

#include <windows.h>
#include <string.h>
#include <assert.h>
char *my_strcmp(const char *rty,const char *cvb)
{
	assert(rty);
	assert(cvb);
	while (*rty == *cvb)
	{
		if(*rty == '\0')
			return 0;
		rty++;
		cvb++;
	}
    return (*rty-*cvb);
}
int main()
{
	char rty[10]="abcdefg";
	char cvb[10]="abcedfg";
	int ret=my_strcmp(rty,cvb);
	if(ret>0)
	{
		printf("rty大");
	}
	else if(ret<0)
	{
		printf("cvb大");
	}
	else
	{
		printf("相等");
	}
	return 0;
}

 以上是我今天分享的我的一些寫字符串代碼的思路,如果大家有什么建議希望大家留言,我會改進的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

登封市| 东明县| 册亨县| 陇川县| 聂荣县| 台湾省| 云阳县| 赤城县| 建湖县| 城市| 渭南市| 武宣县| 邹城市| 济宁市| 大名县| 鄂尔多斯市| 富民县| 长武县| 舟曲县| 荣成市| 丘北县| 辽源市| 遵义县| 香河县| 明水县| 封开县| 马龙县| 石泉县| 龙胜| 岢岚县| 江源县| 芷江| 历史| 万州区| 修水县| 福州市| 兴山县| 同江市| 彰化市| 平塘县| 武邑县|