中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C語言中字符串函數怎么入門

發布時間:2022-01-04 00:14:08 來源:億速云 閱讀:105 作者:柒染 欄目:開發技術

這篇文章給大家介紹C語言中字符串函數怎么入門,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

    實現字符串庫函數功能

    有些時候我們可能會被限制無法使用庫函數,這個時候我們需要編寫自己的庫函數。但了解了字符串庫函數的功能之后,想要實現并不困難,今天我們用數組和循環來簡單實現幾個字符串庫函數的功能。

    1.strlen函數

    strlen函數使用來求字符串長度的,遇到\0就會停止,并返回字符串的長度,接下來根據這個特性來編寫一下我們自己的strlen

    int my_strlen(char string[]) {
    	int count= 0;
    	while (string[count] != NULL) {        
    		count++;
    	}
    	return count;
    }//也可以將while的判斷條件改為string[count]

    有些小伙伴應該知道遞歸的實現,但是這里涉及了指針的內容,我就不教大家實現了

    2.strcmp函數

    strcmp字符串比較函數,對兩個字符串進行比較,相當返回0,前一個字符串大于后一個字符串會返回大于0的數,小于則返回小于0的數,至于具體返回多少,則需要看編譯器。

    在實現strcmp功能之前,我們需要了解它的機制,strcmp是一個字符一個字符的比較ASCII值的

    int  my_strcmp(char string1[], char string2[]) {
    	int i = 0;
    	   //當兩個字符串都沒有達到末端時,繼續比較
    	while ((string1[i] == string2[i]) && string1[i] && string2[i])
    		i++;
    	return string1[i] - string2[i]; //當兩個字符串指向的字符不一樣或者到達終點時返回差值
    }

    一個簡單的while循環就能達到目的

    3.strcpy函數

    字符串拷貝函數,將后一個字符串拷貝到前一個字符串中,我們需要保證目的地足夠大

    void my_strcpy(char string1[50], char string2[]) {
    	int i = 0;
    	while (string1[i++] = string2[i++]);
    }
    //這里利用了賦值表達式的特性,直接進行賦值,當string[i]為\0時賦值完循環自動停止
    //當然這個程序并不是完美的,根據strcpy的返回值我們還可以這樣修改
    char* my_strcpy(char string1[50], char string2[]) {
    		int i = 0;
    		while (string1[i++] = string2[i++]);
    		return string1;
    }//返回目的地的起始地址

    4.strcat函數

    strcat字符串追加,在一個字符串之后追加一個新的字符串,如果以strcpy的角度理解就是以第一個字符串的\0位置為起始地址進行字符串拷貝,那么接下來就很簡單了

    char* my_strcat(char string1[50], char string2[]) {
    	int i = -1;
    	while (string1[++i]);//循環停止時i指向\0
    	int j = 0;
    	while (string1[i++] = string2[j++]); //與strcpy同理
    	return string1;
    }

    5.strupr函數

    strupr字符串大寫函數,將所有字符串中的小寫字母都變成大寫,我們只需要根據ASCII值就可以簡單實現

    char*my_strupr(char string[]) {
    	int i = 0;
    	while (string[i]) {       //當string[i]指向\0時循環停止
    		if (string[i] >= 'a' && string[i] <= 'z')
    		string[i] -= 32;
    		i++;
    	}
    	return string;
    }

    6.strlwr函數

    和strupr對應,這是字符串小寫函數,把大寫轉成小寫,只需要對上面的代碼簡單一改就可以

    char*my_strlwr(char string[]) {
    	int i = 0;
    	while (string[i]) {       //當string[i]指向\0時循環停止
    		if (string[i] >= 'A' && string[i] <= 'Z')
    		string[i] += 32;
    		i++;
    	}
    	return string;
    }

    關于C語言中字符串函數怎么入門就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

    向AI問一下細節

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

    AI

    大方县| 巨野县| 安泽县| 嘉义市| 武乡县| 旬邑县| 庆城县| 临澧县| 铅山县| 辽宁省| 沐川县| 吉林市| 玉溪市| 长沙市| 孙吴县| 宁强县| 德兴市| 年辖:市辖区| 额济纳旗| 弥勒县| 武清区| 金寨县| 宕昌县| 额敏县| 西乌珠穆沁旗| 鹤庆县| 洛川县| 凯里市| 乐昌市| 宜君县| 赫章县| 太湖县| 靖宇县| 镇原县| 万载县| 太仓市| 正定县| 红安县| 扬中市| 荔浦县| 宝坻区|