C語言常用字符串

目錄

1.什么是字符串

2.如何定義字符串?

第3和第4定義的區別:3是字符串變量,4是字符串常量,不予許被修改

3.strlen和sizeof的區別?

?4.地址分配(malloc,realloc,free,memset)

案例?

?5.字符串拷貝(strcpy,strncpy)?

5.1strcpy()

?5.2strncpy()

?6.字符串拼接(strcat)

7.字符串比較?(strcmp)


1.什么是字符串

由雙引號(Double Quote)引起來的一串字符稱為字符串字面值(String Literal),或者簡稱字符串,例如 “hello world”

注意:字符串結束的標志是一個 \0
在計算字符串長度的時候\0是結束標志,不算作字符串內容。

2.如何定義字符串?

1.int arr[]={1,2,3,4};  //整型數組2.char arr1[]={'h','e','l','l','o','\0'};
//定義字符串其實和定義整型數組很像,但是要以\0結尾3.char arr2[]={"hello world"};    //喜歡用這種和*p="hello world"這種4.char *p="hello world";

第3和第4定義的區別:3是字符串變量,4是字符串常量,不予許被修改

3.strlen和sizeof的區別?

在計算數據長度一般都用 sizeof 或者 strlen  ,不過這兩還是有不小的區別的 
1例
#include <stdio.h>
#include <string.h>
int main(){char arr[128]={"hello"};printf("sizeof :%d",sizeof(arr)); 這里的 sizeof 就是128了 sizeof 計算的整個數組的長度printf("strlen :%d",strlen(arr)); 這里的 strlen 就是5 strlen 計算的是有效的長度了,注意就好試完數組了就試下指針char *p="hello";printf("sizeof:char *   %d",sizeof(char *));printf("sizeof:int *    %d",sizeof(int *));printf("sizeof:p        %d",sizeof(p));printf("strlen:p        %d",strlen(p));1通過代碼可以知道,指針在這是占八位字節,且要用strlen才能算出指針中內容的大小}

代碼運行結果

?4.地址分配(malloc,realloc,free,memset)

malloc()函數原型 ?void *malloc(size_t size)

C 庫函數 void *malloc(size_t size) 分配所需的內存空間,并返回一個指向它的指針。

malloc在堆開辟空間,而普通變量在開辟空間,函數調用結束后就清理,回收空間,而堆要程序結束后才會釋放空間,所以malloc和free一般成對出現,主動釋放

realloc()函數原型 void *realloc(void *ptr, size_t size)

C 庫函數 void *realloc(void *ptr, size_t size) 嘗試重新調整之前調用 malloc 或 calloc 所分配的 ptr 所指向的內存塊的大小。?

free()函數原型    void free(void *ptr)

?釋放,防止內存泄露,防止懸掛指針

memset()函數原型  void *memset(void *str, int c, size_t n)

memset是一個初始化函數,作用是將某一塊內存中的全部設置為指定的值

memset函數在初始化處理時非常方便,但也有其局限性,比如要注意初始化數值,要注意字節數等等

int a[4];
memset(a,1,sizeof(a));

案例?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(){char *p;p=(char *)malloc(1);*p='s';printf("*p=%c\n",*p);free(p);//malloc在執行完后前一個malloc會懸掛起來,找不到了//malloc在堆開辟空間,而普通變量在棧開辟空間,函數調用結束后就清理,回收空間,而堆要程序結束后才會釋放空間p=(char *)malloc(12);memset(p,'\0',12);//將p全部清為\0int len=strlen("chenxinyu666");int Newlen=len-12+1;  //將要擴容的大小realloc(p,Newlen);    //將p進行擴容strcpy(p,"chenxinyu666");puts(p);puts("done");return 0;
}

?5.字符串拷貝(strcpy,strncpy)?

5.1strcpy()

函數原型:char *strcpy(char* dest, const char *src);

?參數1要被賦值的指針,參數2要給別人賦值的指針,并返回被復制后的后的dest

?5.2strncpy()

函數原型:char *strncpy(char *dest, const char *src, int n)

表示把src所指向的字符串中以src地址開始的前n個字節復制到dest所指的數組中,并返回被復制后的dest

?6.字符串拼接(strcat)

 函數strcat()原型:char *strcat(char *dest, const char *src);

把src所指向的字符串(包括“\0”)復制到dest所指向的字符串后面(刪除*dest原來末尾的“\0”)。要保證*dest足夠長,以容納被復制進來的*src。*src中原有的字符不變。返回指向dest的指針。

7.字符串比較?(strcmp)

函數strcmp()原型:int strcmp(const char *s1,const char *s2);

若str1=str2,則返回零;若str1<str2,則返回負數;若str1>str2,則返回正數

函數strncmp()原型:int strncmp ( const char * str1, const char * str2, size_t n )

?功能是把 str1 和 str2 進行比較,最多比較前 n 個字節,若str1與str2的前n個字符相同,則返回0;若s1大于s2,則返回大于0的值;若s1 小于s2,則返回小于0的值。

8 如何快速查找需要的標準庫函數呢?

我的習慣是使用man函數手冊

格式:man strcpy?

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

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

相關文章

kafka創建新topic

創建topic bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytopic bin/kafka-topics.sh //bin目錄下的.sh --create --bootstrap-server //固定寫法 localhost:9092 //ip端口 --replication-fac…

vue 集成行政區域選擇插件region和數據回顯

故事&#xff1a;最近&#xff0c;項目需要進行行政區域圍欄的繪制&#xff0c;由于老舊項目是利用js保存全國行政區域地址和編碼&#xff0c;在選擇器select進行匹配顯示&#xff0c;但此方法復雜&#xff0c;因此選擇集成區域插件region 步驟一&#xff1a;用命令安裝region…

JS實現返利網注冊系統(網頁數據驗證)

主代碼 <!DOCTYPE HTMLPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><title>返利網注冊</tit…

品牌線下店鋪的查價方式

不同于電商平臺&#xff0c;線下店鋪會更傳統&#xff0c;產品定價除了受品牌規則的約束&#xff0c;同樣也與門店實際銷量和促銷有關&#xff0c;當遇到地方活動&#xff0c;促銷力度大了&#xff0c;價格難免會與品牌要求相差異&#xff0c;但是管控渠道&#xff0c;包含線上…

無法將“mvn”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,如果包括路徑,請確保路徑正確,然后再試一次。

這個錯誤表明系統無法找到mvn命令。這通常是因為Maven沒有正確安裝或者Maven的安裝路徑沒有添加到系統的環境變量中。你需要確保Maven已經正確安裝&#xff0c;并且將Maven的安裝路徑添加到系統的環境變量中。 你可以按照以下步驟在Windows上安裝Maven&#xff1a; 1. 訪問Mave…

痤瘡分割 實驗心路歷程

數據集的制作 將labelme生成的標注文件記普通的json文件轉成coco數據集格式的json文件 圖像分辨率過大 如果不做任何調整&#xff1a; 會出現“killed”的報錯&#xff0c;表示圖片像素過大&#xff0c;顯卡內存不夠&#xff0c;無法支撐訓練 顯卡 換成更高性能的顯卡&am…

小紅書運營方式,需要搭建自己的選題庫

無論是個人還是專業號&#xff0c;面臨最大的問題是持續創作的能力。如何能夠持續發文&#xff0c;同時還能圍繞自己的業務輸出內容。很多賬號斷更就是不知道該更新什么&#xff0c;久而久之賬號斷更。 一般來說這種情況&#xff0c;就需要建立自己的選題庫&#xff0c;通過系…

FPGA高端項目:UltraScale GTH + SDI 視頻解碼,SDI轉DP輸出,提供2套工程源碼和技術支持

目錄 1、前言免責聲明 2、相關方案推薦我這里已有的 GT 高速接口解決方案我目前已有的SDI編解碼方案 3、詳細設計方案設計框圖3G-SDI攝像頭LMH0384均衡EQUltraScale GTH 的SDI模式應用UltraScale GTH 基本結構參考時鐘的選擇和分配UltraScale GTH 發送和接收處理流程UltraScale…

『Redis』在Docker中快速部署Redis并進行數據持久化掛載

&#x1f4e3;讀完這篇文章里你能收獲到 在Docke中快速部署Redis如何將Redis的數據進行持久化 文章目錄 一、拉取鏡像二、創建掛載目錄1 宿主機與容器掛載映射2 掛載命令執行 三、創建容器—運行Redis四、查看運行情況 一、拉取鏡像 版本號根據需要自己選擇&#xff0c;這里以…

AI 種菜革命:農業科學家們的探索/《流浪地球》導演感受到AI的威脅,《浪球3》也遇靈感洗禮 | 魔法半周報

我有魔法?為你劈開信息大海? 高效獲取AIGC的熱門事件&#x1f525;&#xff0c;更新AIGC的最新動態&#xff0c;生成相應的魔法簡報&#xff0c;節省閱讀時間&#x1f47b; &#x1f525; 資訊預覽 AI 種菜革命&#xff1a;農業科學家們的探索 《流浪地球》導演感受到AI的威…

外貿:這些你可能并不知道

昨天我打開平臺&#xff0c;然后發現有一個產品被限流了&#xff0c;限流的原因是有客戶投訴產品的價格和實際銷售的價格不符&#xff0c;然后查看產品&#xff0c;發現是之前很久發布的一款產品&#xff0c;于是趕緊刪除了。 以往&#xff0c;我們在平臺上發布產品的時候為了…

STM32超聲波——HC_SR04

文章目錄 一.超聲波圖片二.時序圖三.超聲波流程四.單位換算五.取余計算六.換算距離七.超聲波代碼 一.超聲波圖片 測量距離&#xff1a;2cm——400cm 二.時序圖 (1).以下時序圖要先提供一個至少10us的脈沖觸發信號&#xff0c;告訴單片機我準備好了&#xff0c;然后該超聲波…

電腦連接了wifi但是沒有網絡

電腦連接了WiFi但是網絡不可用 問題場景&#xff1a;問題描述解決方案&#xff1a; 問題場景&#xff1a; 搬磚搬的好好的&#xff0c;電腦的WiFi突然就斷開了&#xff0c;這時候還沒意識到問題的嚴重性&#xff0c;直接就去重新連WiFi&#xff0c;能連上&#xff0c;但是沒有…

醫院HIS系統慢和卡頓網絡流量分析

分析背景 近期醫院的醫生使用HIS系統的時候&#xff0c;經常出現系統慢和卡頓現象。經過交流得知醫生在點擊一個頁面&#xff0c;需要等很久才能加載出來&#xff0c;且對于開藥這種的操作&#xff0c;醫生需要點每個大類去找到對應的藥&#xff0c;每點一次都需要等一會兒才能…

灰度圖存儲 - 華為OD統一考試(C卷)

OD統一考試(C卷) 分值: 100分 題解: Java / Python / C++ 題目描述 黑白圖像常采用灰度圖的方式存儲,即圖像的每個像素填充一個灰色階段值,256節階灰圖是一個灰階值取值范圍為0-255的灰階矩陣,0表示全黑,255表示全白,范圍內的其他值表示不同的灰度。 但在計算機中實…

杰發科技AC7840——CAN通信簡介(1)

簡介 7840支持4路CAN-FD Demo調試 官網下載demo&#xff0c;燒錄&#xff0c;打開串口發現打印如下。原因是沒有連接CAN盒子&#xff0c;總線錯誤。 CAN收發器端波形 CAN_L有信號&#xff0c;CAN_H沒有 波形放大 GPIO端波形 有持續波形輸出 波形放大查看&#xff0c;有50U…

【塵緣送書第六期】2023年度學習:AIGC、AGI、GhatGPT、人工智能大模型實現必讀書單

【文末送書】今天推薦幾本AIGC、AGI、GhatGPT、人工智能大模型領域優質書籍。 目錄 前言1 《ChatGPT 驅動軟件開發》2 《ChatGPT原理與實戰》3 《神經網絡與深度學習》4 《AIGC重塑教育》5 《通用人工智能》6 文末送書 前言 2023年是人工智能大語言模型大爆發的一年&#xff0…

IJCAI 2024 International Joint Conference on Artificial Intelligence

目錄 1、 重要1.1 官網&#xff1a;1.2 提交網址&#xff1a;1.3 模板 &#xff08;latex & word&#xff09; 2、 Call for Papers2.1 Important Dates2.2 Details 3、 注意事項4 New in 20245 Simplified procedure for resubmission information6、 Submission Process …

電腦出現錯誤0x80004005怎么解決,解決0x80004005的問題

當電腦出現0x80004005錯誤時&#xff0c;通常是由于系統或應用程序之間的通信問題或文件系統損壞引起的。該錯誤代碼表示未指定錯誤&#xff0c;在Windows系統中較為常見。 一.解決0x80004005錯誤的步驟 重新啟動電腦 有時候&#xff0c;錯誤只是一個暫時的問題&#xff0c;重…

單調棧【基礎算法精講 26】

思想 : 及時去除無用數據&#xff0c;保證棧中數據有序 739.每日溫度 鏈接 : 力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 思路 : 單調棧&#xff0c;從后往前遍歷&#xff0c;棧中記錄下一個更大元素的候選項&#xff1b; 代碼 : 從后…