strcmp()在C語言中怎么用(附帶實例)

C語言標準庫中的 strcmp() 函數用于比較兩個字符串。

strcmp() 函數原型如下:

int strcmp (const char * str1, const char * str2);

  • const char *str1 表示待比較字符串 1 的首地址;
  • const char *str2 表示待比較字符串 2 的首地址。

如果兩個字符串相同,則返回 0;否則返回其他值。

下面程序展示了一個使用 strcmp() 函數比較字符串的示例:

/**
*  快速入門C語言 https://xiecoding.cn/c/
**/
#include <stdio.h>
#include <string.h>
int main()
{const char *str1 = "abcdefg";const char *str2 = "abcdefgh";const char *str3 = "abcdef";// str1 與自己進行比較int ret = strcmp(str1, str1);printf("%d\n", ret);// str1 與 str2 進行比較ret = strcmp(str1, str2);printf("%d\n", ret);// str1 與 str3 進行比較ret = strcmp(str1, str3);printf("%d\n", ret);return 0;
}

運行結果為:

0
-1
1

字符串str1與自己進行比較,結果相同,因此返回了 0。"abcedfg" 與 "abcedfgh" 進行比較,返回了 -1。"abcedfg" 與 "abcedf" 進行比較,返回了 1。

不相同的情況下,有兩種不同的結果:1 和 -1。這是為什么呢?

下圖展示了字符串比較的過程:

圖 1 字符串比較內部規則

字符串比較函數會依次比較每個字符,如果相同,則比較下一個字符;如果直到 '\0' 字符都相同,則返回 0,表示兩字符串相同;如果不相同,則比較當前字符的 ASCII 碼。

如果 str1 的當前字符大于 str2 的當前字符,則返回 1;否則返回 -1。例如當 str1 與 str2 進行比較時,不同的字符是 '\0' 與 'h',因為 '\0' 小于 'h',所以返回 -1;str1 與 str3 比較時,不同的字符是 'g' 與 '\0',因為 'g' 大于 '\0',所以返回 1。

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

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

相關文章

搜廣推校招面經八十二

一、L1 和 L2 正則化的區別&#xff1f;對數據分布有什么要求&#xff0c;它們都能防止過擬合嗎&#xff1f; 1.1. L1 與 L2 正則化的區別 特性L1 正則化&#xff08;Lasso&#xff09;L2 正則化&#xff08;Ridge&#xff09;正則項λ * ∑|w?| λ ? ∑ ( w i 2 ) λ * ∑…

數據結構和算法(九)--紅黑樹

一、紅黑樹 1、紅黑樹 前面介紹了2-3樹&#xff0c;可以看到2-3樹能保證在插入元素之后&#xff0c;樹依然保持平衡狀態&#xff0c;它的最壞情況下所有子結點都是2-結點&#xff0c;樹的高度為IgN&#xff0c;相比于我們普通的二叉查找樹&#xff0c;最壞情況下樹的高度為N,確…

工業攝像頭通過USB接口實現圖像

工業攝像頭系列概覽&#xff1a;類型與應用 工業攝像頭系列涵蓋了多種類型&#xff0c;以滿足不同行業和應用的需求。以下是對工業攝像頭系列的一些介紹&#xff1a; 一、主要類型與特點 USB工業攝像頭 &#xff1a;這類攝像頭通常通過USB接口與計算機連接&#xff0c;適用于…

使用Django框架表單

使用Django框架表單 文章目錄 使用Django框架表單[toc]1.使用Form類構建表單2.表單字段與Widget控件 1.使用Form類構建表單 【創建項目和應用】 PS C:\Users\ls> cd E:\Python\ PS E:\Python> django-admin.exe startproject FormSite PS E:\Python> cd .\FormSite\…

docker配置mysql遇到的問題:網絡連接超時、啟動mysql失敗、navicat無法遠程連接mysql

目錄 1.網絡超時 方式1. 網絡連接問題 方式2. Docker鏡像源問題 方式3.使用國內鏡像源 2.啟動mysql鏡像失敗 3.navicat無法遠程連接mysql 1.網絡超時 安裝MySQL時出現超時問題&#xff0c;可能由多種原因導致&#xff1a; 方式1. 網絡連接問題 原因&#xff1a;網絡不穩定…

React 多語言國際化:實現多語言支持

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

Claude系列模型-20250426

文章目錄 Claude 3.7 Sonnet - "Our most intelligent model yet"Claude 3.5 Haiku - "Fastest model for daily tasks"Claude 3.5 Sonnet (Oct 2024)Claude 3 Opus總結Claude 3.7 Sonnet - “Our most intelligent model yet” 特點: 這是目前Claude系列…

Linux查看可用端口號碼命令

在Linux系統中&#xff0c;有多種命令可用于查看可用端口號碼&#xff0c;下面為你詳細介紹&#xff1a; 1. 使用netstat命令 netstat是一個功能強大的網絡工具&#xff0c;可用于顯示網絡連接、路由表和網絡接口等信息。你可以結合不同的選項來查看端口使用情況。 查看所有…

leetcode201.數字范圍按位與

找到公共前綴部分&#xff0c;然后后面的部分全0 class Solution {public int rangeBitwiseAnd(int left, int right) {int offset 0;while (left ! right) {offset;left left >> 1;right right >> 1;}return right << offset;} }

端到端自動駕駛的數據規模化定律

25年4月來自Nvidia、多倫多大學、NYU和斯坦福大學的論文“Data Scaling Laws for End-to-End Autonomous Driving”。 自動駕駛汽車 (AV) 棧傳統上依賴于分解方法&#xff0c;使用單獨的模塊處理感知、預測和規劃。然而&#xff0c;這種設計在模塊間通信期間會引入信息丟失&am…

021-C語言文件操作

C語言文件操作 文章目錄 C語言文件操作1. 文件的概念2. 二進制文件和文本文件3. 文件的打開和關閉3.1 流和標準流3.1.1 流3.1.2 標準流 3.2 文件指針3.3 文件的打開和關閉 4. 文件的順序讀寫4.1 順序讀寫函數4.2 對比兩組函數4.2.1 scanf/fscanf/sscanf4.2.2 printf/fprintf/sp…

如何使用@KafkaListener實現從nacos中動態獲取監聽的topic

1、簡介 對于經常需要變更kafka主題的場景&#xff0c;為了實現動態監聽topic的功能&#xff0c;可以使用以下方式。 2、使用步驟 2.1、添加依賴 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactI…

《TCP/IP詳解 卷1:協議》之第七、八章:Ping Traceroute

目錄 一、ICMP回顯請求和回顯應答 1、ICMP回顯請求 2、ICMP回顯應答 二、ARP高速緩存 三、IP記錄路由選項&#xff08;Record Route&#xff0c;RR&#xff09; 1、記錄路由選項的工作過程 2、RR 選項的 IP 頭部格式 2.1、RR 請求 2.2、RR響應 四、ping 的去返路徑 五…

30天通過軟考高項-第四天

30天通過軟考高項-第四天 任務&#xff1a;項目進度管理 思維導圖閱讀 知識點集錦閱讀 知識點記憶 章節習題練習 知識點練習 手寫回憶ITTO 聽一遍喜馬拉雅關于范圍的內容 進度管理-背 1. 過程定義 龜腚排池至控 規劃進度管理&#xff1a;為了規劃、編制、管理…

根據JSON動態生成表單表格

根據JSON動態生成表單表格 一. 子組件 DynamicFormTable.vue1,根據JSON數據動態生成表單表格,支持表單驗證JS部分1.1,props數據1.2,表單數據和數據監聽1.3,自動驗證1.4,表單驗證1.5,獲取表單數據1.6,事件處理1.7,暴露方法給父組件2,HTML部分二,父組件1, 模擬數據2,…

【趙渝強老師】快速上手TiDB數據庫

從TiDBv4.0起&#xff0c;提供了包管理工具TiUP&#xff0c;負責管理TiDB、PD、TiKV等組件。用戶只需通過TiUP命令即可運行這些組件&#xff0c;顯著降低了管理難度。TiUP程序只包含少數幾個命令&#xff0c;用來下載、更新、卸載組件。TiUP通過各種組件來擴展其功能。組件是一…

springboot入門-DTO數據傳輸層

在 Spring Boot 應用中&#xff0c;DTO&#xff08;Data Transfer Object&#xff0c;數據傳輸對象&#xff09; 是專門用于在不同層&#xff08;如 Controller 層、Service 層、外部系統&#xff09;之間傳輸數據的對象。它的核心目的是解耦數據模型和業務邏輯&#xff0c;避免…

安裝docker,在docker上安裝mysql,docker上安裝nginx

目錄 一.安裝docker 1.1查看Linux版本的命令這里推薦兩種&#xff1a; 1.2查看內核版本有三種方式&#xff1a; 2.安裝 2.1 如果之前安裝了docker&#xff0c;先刪除舊版本的doker 2.2 安裝需要的軟件包&#xff0c;yum-util提供yum-config-manager功能&#xff0c;另外兩…

Android killPackageProcessesLSP 源碼分析

該方法用于終止指定包名/用戶ID/應用ID下符合條件的應用進程&#xff0c;涉及多進程管理、資源凍結、進程清理及優先級更新等操作。核心流程分為進程篩選、資源凍結、進程終止與資源恢復三個階段。 /*** 從已排序的進程列表中&#xff0c;提取從指定起始索引 startIdx 開始的連…

openAICEO山姆奧特曼未來預測雄文之三個觀察

《三個觀察》 山姆奧特曼 這篇文章主要講的是關于AGI&#xff08;人工通用智能&#xff09;的未來發展及其對社會的影響&#xff0c;用大白話總結如下&#xff1a; 核心觀點&#xff1a; AGI是什么&#xff1f; AGI是一種能像人類一樣解決各種復雜問題的智能系統&#xff0c;比…