C語言------字符串函數(2)

1.strcat函數功能實現

?
char* mystrcat(char* dest, const char* src)
{assert(dest);assert(src);char* ret = dest;//找到目標空間里面的斜杠0的位置,再追加while (*dest != '\0'){dest++;}while ((*dest++ = *src++)){;}return ret;
}
int main()
{char arr1[20] = "hello";char arr2[] = "world";mystrcat(arr1, arr2);printf("%s\n", arr1);return 0;
}?

(1)這個函數的作用就是實現字符串的追加,把一個加到另外一個上面;

(2)這個函數的返回值是目標處的地址,因為這個過程指針在移動變化,所以我們在最開始的時

候就定義指針變量ret記錄初始時候的位置,最后返回ret;

(3)第一個循環就是一直到找到斜杠0才停止;

第二個循環就是讓指針后移,并且在移動的同時,實現對應位置的賦值;

(4)當移動到斜杠0的時候,就會因為斜杠0等于斜杠0的賦值,是的表達式的結果是0,循環結束;

(5)這個函數不能自己拼接自己,因為如果自己拼接的話,這種情況下2個指針指向的位置是相同

的,dest向右移動的時候,src也向右移動,但是src指針永遠不會找到斜杠0進行終止循環,因為斜

杠0已經被覆蓋掉了,超出范圍以后會造成程序的崩潰;這里不能實現的主要癥結就是2個指針指向

同一位置;?

2.strcmp函數功能實現

(1)第一個字符串大,返回大于0的數;

(2)第二個字符串大,返回小于0的數;

(3)2個字符串相等,返回0;

#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{int ret = 0;assert(str1 != NULL);assert(str2 != NULL);while (*str1 == *str2){if (*str1 == '\0')return 0;str1++;str2++;}return *str1 - *str2;
}int main()
{char arr1[20] = "abcdef";char arr2[20] = "acdef";int ret = my_strcmp(arr1, arr2);printf("%d\n", ret);return 0;
}

這里返回指針相減,也就是相差字符的個數,是符合條件的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697397.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697397.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697397.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【信息系統項目管理師】--【信息技術發展】--【現代化創新發展】--【物聯網】

文章目錄 第二章 信息技術發展2.2 新一代信息技術及應用2.2.1 物聯網1.技術基礎2.關鍵技術3.應用和發展 第二章 信息技術發展 信息技術是在信息科學的基本原理和方法下&#xff0c;獲取信息、處理信息、傳輸信息和使用信息的應用技術總稱。從信息技術的發展過程來看&#xff0c…

Android 圓環帶刻度條進度動畫效果實現

效果圖 需求是根據傳感器做一個重力球效果&#xff0c;先實現了動畫后續加上跟傳感器聯動. 又是擺爛的一天&#xff0c; 尚能呼吸&#xff0c;未來可期啊 View源碼 package com.android.circlescalebar.view;import android.content.Context; import android.content.res.Typ…

C++ //練習 7.58 下面的靜態數據成員的聲明和定義有錯誤嗎?請解釋原因。

C Primer&#xff08;第5版&#xff09; 練習 7.58 練習 7.58 下面的靜態數據成員的聲明和定義有錯誤嗎&#xff1f;請解釋原因。 //example.h class Example{public:static double rate 6.5;static const int vecSize 20;static vector<double> vec(vecSize); };//e…

【治愈系】心靈雞湯美文:溫暖你的每一寸心田

1.人生就像一杯茶&#xff0c;不會苦一輩子&#xff0c;但總會苦一陣子。只有經歷過苦澀&#xff0c;才能品味到甜美的滋味。 2.每一次失敗都是一次寶貴的經驗&#xff0c;它教會我們如何更好地面對困難和挑戰。不要害怕失敗&#xff0c;因為失敗是成功的前奏。 3.人生最重要的…

【Vue】本地使用 axios 調用第三方接口并處理跨域

前端處理跨域 一. 開發準備 開發工具&#xff1a;VScode框架&#xff1a;Vue2項目結構&#xff1a;vue腳手架生成的標準項目&#xff08;以下僅顯示主要部分&#xff09; 本地已搭建好的端口&#xff1a;8080要請求的第三方接口&#xff1a;http://1.11.1.111:端口號/xxx-api…

刪除文件中的注釋(C語言)

【題目描述】刪除文件中的注釋&#xff1a;將C語言源程序(hello.c)文件中的所有注釋去掉后存入另一個文件(new_hello.c)。試編寫相應程序。 【代碼】 #include <stdio.h> #include <stdlib.h> int main(void) {FILE *fp1, *fp2;if ((fp1fopen("hello.c"…

【Git工具實戰】實用真實 Git 開發工作流程

前言 最近工作中發現&#xff0c;很多開發人員連最基本的Git怎么使用都不知道&#xff0c;比如什么時候切分支&#xff0c;什么時候合并代碼&#xff0c;代碼遇到沖突怎么辦&#xff0c;經常出現掉代碼&#xff0c;代碼合并后丟失的情況。以下為個人總結的常規Git開發工作流程…

Java架構師之路五、微服務:微服務架構、服務注冊與發現、服務治理、服務監控、容器化等。

目錄 微服務架構&#xff1a; 服務注冊與發現&#xff1a; 服務治理&#xff1a; 服務監控&#xff1a; 容器化&#xff1a; 上篇&#xff1a;Java架構師之路四、分布式系統&#xff1a;分布式架構、分布式數據存儲、分布式事務、分布式鎖、分布式緩存、分布式消息中間件、…

C語言系列15——C語言的安全性與防御性編程

目錄 寫在開頭1 緩沖區溢出&#xff1a;如何防范與處理1.1 緩沖區溢出的原因1.2 預防與處理策略 2. 安全的字符串處理函數與使用技巧2.1 strncpy函數2.2 snprintf函數2.3 strlcpy函數2.4 使用技巧 3 防御性編程的基本原則與實際方法3.1 基本原則3.2 實際方法 寫在最后 寫在開頭…

思騰合力攜京東打造服務器采購解決方案,助企業高校提升算力

隨著云計算、大數據、人工智能的快速發展&#xff0c;服務器需求不斷擴大&#xff0c;市場規模持續保持增長。IDC數據顯示&#xff0c;預計2023年我國服務器市場規模將增至308億美元。基于對服務器市場的趨勢洞察&#xff0c;思騰合力攜手京東品牌持續深化合作&#xff0c;在保…

深入淺出JVM(六)之前端編譯過程與語法糖原理

本篇文章將圍繞Java中的編譯器&#xff0c;深入淺出的解析前端編譯的流程、泛型、條件編譯、增強for循環、可變長參數、lambda表達式等語法糖原理 編譯器與執行引擎 編譯器 Java中的編譯器不止一種&#xff0c;Java編譯器可以分為&#xff1a;前端編譯器、即時編譯器和提前編…

(提供數據集下載)基于大語言模型LangChain與ChatGLM3-6B本地知識庫調優:數據集優化、參數調整、Prompt提示詞優化實戰

文章目錄 &#xff08;提供數據集下載&#xff09;基于大語言模型LangChain與ChatGLM3-6B本地知識庫調優&#xff1a;數據集優化、參數調整、提示詞Prompt優化本地知識庫目標操作步驟問答測試的預設問題原始數據情況數據集優化&#xff1a;預處理&#xff0c;先后準備了三份數據…

mac下C、C++項目出現‘stdio.h’ file not found的解決方法

【轉載】https://www.cnblogs.com/yongfengnice/p/14260997.html 有時候更新mac系統或者項目配置之后&#xff0c;打開之前的項目&#xff0c;發現出現莫名其妙的‘stdio.h’ file not found等頭文件找不到。 解決這個問題之前&#xff0c;我們要弄清楚開發工具是引用了系統哪…

C++:STL簡介

1. 什么是STL STL(standard template libaray- 標準模板庫 ) &#xff1a; 是 C 標準庫的重要組成部分 &#xff0c;不僅是一個可復用的組件庫&#xff0c;而且 是一個包羅數據結構與算法的軟件框架 。 2. STL的版本 3. STL的六大組件 4.STL的缺陷 1. STL庫的更新太慢了。這…

用于將Grafana默認數據庫sqlite3遷移到MySQL數據庫

以下是一個方案&#xff0c;用于將Grafana數據遷移到MySQL數據庫。 背景: grafana 默認采用的是sqlite3&#xff0c;當我們要以集群形式部署的時使用mysql較為方便&#xff0c;試了很多sqlite轉mysql的方法要么收費,最后放棄。選擇自己動手風衣足食。 目標: 遷移sqlite3切換…

速評谷歌開源大模型Gemma 7B

大家好,我是herosunly。985院校碩士畢業,現擔任算法研究員一職,熱衷于機器學習算法研究與應用。曾獲得阿里云天池比賽第一名,CCF比賽第二名,科大訊飛比賽第三名。擁有多項發明專利。對機器學習和深度學習擁有自己獨到的見解。曾經輔導過若干個非計算機專業的學生進入到算法…

day16_ListSet課后練習題 - 參考答案

文章目錄 day16_課后練習題第1題第2題第3題第4題第5題第6題第7題第8題 day16_課后練習題 第1題 案例&#xff1a; ? 1、用一個String[]數組存點數 ? 2、用一個String[]數組存花色 ? 3、用一個String[]數組存大王、小王 ? 4、用上面的數組&#xff0c;生成一副撲克牌 …

C++ 文件操作-文本文件-讀取和打開文件方法詳解

讀文件步驟 #include <iostream> using namespace std; #include <fstream> #include <string> //文本文件 讀文件void test(){// 1 包含頭文件// 2 創建流對象ifstream ifs;// 3 打開文件 并且判斷是否打開成功ifs.open("table.txt",ios::in); //…

VS 2015 發布 WebService

本文介紹了使用VS2015發布WebService的步驟 右鍵項目點擊發布 選擇文件系統和目標位置 配置選擇Debug-Any CPU&#xff08;選其他也可以&#xff09; 4. 點擊發布&#xff0c;在對應文件夾中可以看到發布出來的內容。 記錄遇到的問題&#xff0c; 發布前要選擇刪除所有現有文…

【PostgreSQL】PostgreSQL詳細介紹

PostgreSQL詳細介紹 一、什么是PostgreSQL&#xff1f;二、為什么要使用PostgreSQL&#xff1f;三、PostgreSQL功能列表3.1 數據類型3.2 數據完整性3.3 并發&#xff0c;性能3.4 可靠性、災難恢復3.5 安全3.6 可擴展性3.7 國際化&#xff0c;文本搜索 四、參考資料 關于Postgre…