C語言基礎:字符數(shù)組
一維字符數(shù)組應用 存儲字符串。1.定義類型 數(shù)組名[整形常量]; 整形常量 數(shù)組的容量表示可以儲存多少個字符 類型 char c語言規(guī)定字符串必須使用\0 作為結束標準。 如果你要在數(shù)組中儲存一個 hello , hello\0 共計6個字符空間 char string[100]; ? ?2.訪問數(shù)組名[整形表達式]str[0] a;char c str[0];使用下標 運算符 [] ,整形表達式 ,常量變量表達式-》 整形 。下標從 0 開始下標的范圍 0 - 有效長度 (從下標0 開始 到字符串\0 之前的有效字符長度);字符數(shù)組 也是數(shù)組不能整體操作 。除非調用函數(shù)。char str[10]; str hello; // error 不能整體賦值。// 訪問 寫入 // 下標從0 開始, 長度 5 ,從下標0 開始 到字符串\0 之前的有效字符長度 str[0] h; // str[0] char str[1] e; str[2] l; str[3] l; str[4] o; str[5] \0; // \0 不可以省略 ? // 讀出 數(shù)組元素 putchar(str[0]); // h printf(%c\n,str[1]);//e char c str[4]; // 字符數(shù)組 不可整體操作 //str world; puts(str); // 字符串整體輸出 被輸出的字符串一定是以\0 結尾 printf(str is %s\n,str);3.初始化// 全部初始化 char str1[6]{h,e,l,l,o,\0}; // a 字符常量 1字符 1byte char str2[6]{hello}; // hello 字符串常量默認是有\(zhòng)0 char str3[6]hello; // 用的多 ? // 局部初始化 ,剩下沒有給處值的都是\0 char str4[10]{h,e,o,\0}; // \0 建議手動加上。 char str5[10]{hel}; char str6[10]hello; // 常用 char str7[10]{0}; // 常用空串 ? 0; // 數(shù)字0 \0 ; //字符串結束標志 0 ‘\0’ 在內存中存儲的 都是 0 0; //字符0 ascii 48 0x30 ? char str8[]{h,e,l};// 不是字符串字符數(shù)組沒有\(zhòng)0 char str9[]{hello}; char str10[]hello; char str11[]{0}; // 不要寫成這種遍歷char str[10]{0}; printf(sizeof str[10] is %lu\n,sizeof(str)); printf(sizeof str[0] is %lu\n,sizeof(str[0])); int i 0 ; int len 0 ; // 遍歷的輸入 for(i0;i10 - 1 ;i) // \0 { scanf(%c,str[i]); if(# str[i]) { break; } len; ? } str[len]\0; //遍歷的輸出 for(i0;ilen;i ) // { putchar(str[i]); } ?字符串相關的常用函數(shù)函數(shù)名功能備注strlen獲得字符串有效字符長度 size_t strlen(const char *s);strcpy字符串的復制從一個數(shù)組到另一個數(shù)組 char *strcpy(char *dest, const char *src);strcat字符串的拼接 char *strcat(char *dest, const char *src);strcmp字符串的比較比較字符串的內容是否一致 int strcmp(const char *s1, const char *s2);strlen char str[100]{0}; // char [] char * printf(input string); gets(str); //int len strlen(str); // 有效字符的個數(shù) // int len 0; ? while(1) { if(\0!str[len]) { len; } else { break; } } ? 注意 strlen 和sizeof 的區(qū)別 1. strlen 函數(shù) 需要外部支持 c語言標準庫 sizeof 關鍵字 不需要額外的支持 直接就能用 2. 相對字符數(shù)組 strlen 有效字符的個數(shù) 單位字節(jié) sizeof 獲得數(shù)組在內存中的大小 單位字節(jié)strcpy int main() { //char str1[100]hello; char str1[100]{0}; printf(input string:); gets(str1); char str2[100]{0}; ? // 不能整體操作 // str2 str1; // 把str1 的內容 復制到 str2 //strcpy(str2,str1); int i 0 ; while(1) { str2[i] str1[i]; if(\0 str1[i]) { break; } i; } puts(str2); return 0; } 注意 目標數(shù)組的大小要能容納的下源數(shù)組的的內容。否則 數(shù)組越界。后續(xù)行為不確定(可能可以繼續(xù)運行也可能程序崩潰但從邏輯上已經(jīng)錯誤)。 ?strcat ? int main() { ? char str1[100]hello;//dst char str2[100],world;//src //strcat(str1,str2); // int i 0 ; int j 0 ; while(1) // 找到 str1的結束的地方 { if(\0!str1[i]) { i; } else { break; } } ? while(1)// 開始拼接 { str1[i] str2[j]; if(\0 str2[j]) { break; } i; j; } printf(strcat str1:%s\n,str1); ? } ?strcmp 比較兩個字符串的內容是否一致 ? int main() { char str1[100]hello; char str2[100]aaaaa; char str3[100]hello; ? // 不能寫成這樣這個不是比較 str1,str2 的字符串內容 /* if(str1 str2) { }*/ #if 0 // 系統(tǒng)函數(shù)的使用 int ret 0; ret strcmp(str1,str2); printf(str1 cmp str2 ret %d\n,ret); ? ret strcmp(str1,str3); printf(str1 cmp str3 ret %d\n,ret); #endif ? int i 0 ; int ret 0 ; while(1) { ret str1[i] - str3[i]; if(0ret str1[i]!\0) { i; } else { break; } } printf(ret is %d\n,ret); ? } ? ?二維字符數(shù)組應用存儲多個字符串。二維數(shù)組 可以被稱為 數(shù)組的數(shù)組。 數(shù)組的元素又是一個數(shù)組的結構。語法定義數(shù)據(jù)類型 數(shù)組名[行數(shù)][列數(shù)] 一維數(shù) 二維數(shù) 行數(shù)列數(shù)整型常量char str[3][100] ;訪問, 通過下標運算符 [], 從0 開始表示第一個元素。 不要越界char str[3][100] ; 最后一個元素的下標位置 str[2][99] ? str[0] ,表示第一個字符數(shù)組 數(shù)組名 str[0][0], 表示第一個字符數(shù)組里的第一個字符元素存儲 特性單一性連續(xù)性有序初始化char str1[3][50]{hello,ok,how}; char str2[3][50]{{hello},{ok},{how}}; char str3[3][50]{0} ; // 常用 char str4[3][50]{{0}}; char str5[][50]{hello,ok,123}; //一維大小可以省略二維不能省 //char str6[3][]{hello,ok,123}; ?字符串 逆序排序//逆序 for(i0;isize/2;i) { strcpy(t,str[i]); strcpy(str[i],str[size-1-i]); strcpy(str[size-1-i],t); } ? //排序 sort int j 0 ; for(jsize-1;j0;j--) { for(i0;ij;i) { if(strcmp(str[i],str[i1])0) { strcpy(t,str[i]); strcpy(str[i],str[i1]); strcpy(str[i1],t); } } } ?

相關新聞

GEO優(yōu)化哪個機構靠譜

GEO優(yōu)化哪個機構靠譜

在選擇 GEO 優(yōu)化機構時,以下幾個方面可以幫助你判斷其是否靠譜:機構的背景和資質成立時間:成立時間較長的機構通常在行業(yè)內積累了更多的經(jīng)驗和資源。例如合肥拓路人信息科技有限公司,2016 年 4 月成立,十年的時間里專注…

2026/7/31 5:55:00 閱讀更多
練習實驗之----NAT

練習實驗之----NAT

本實驗包含源NAT、NAT Server、雙向NAT方式實驗拓撲需求1、client1(移動用戶)訪問web-server通過Fw的GE1/0/1接口訪問 2、client3(電信用戶)訪問web-server通過Fw的GE1/0/2接口訪問 3、內網(wǎng)用戶即可以通過域名訪問web-server,也可以通過私網(wǎng)IP訪問 4、web-server設備…

2026/8/1 7:59:05 閱讀更多
馬娘性格分析與訓練心理學:從應激反應到個性化訓練方案

馬娘性格分析與訓練心理學:從應激反應到個性化訓練方案

最近在特雷森學園流傳著一個讓人哭笑不得的消息:因為要陪戀人,特雷森牛郎店竟然停業(yè)了!這個消息在訓練師圈子里引起了不小的震動,大家都在好奇各個馬娘們會有什么反應。作為一名資深訓練師,我收集整理了這次事件中各位…

2026/7/31 5:55:00 閱讀更多
小狼毫輸入法:從零到精通的配置與詞庫管理實戰(zhàn)指南

小狼毫輸入法:從零到精通的配置與詞庫管理實戰(zhàn)指南

1. 為什么選擇小狼毫:從“能用”到“好用”的輸入法進階之路如果你已經(jīng)厭倦了主流輸入法時不時彈出的廣告、臃腫的體積和不可控的隱私上傳,或者你是一名開發(fā)者、文字工作者,對輸入效率和詞庫的純凈度有更高要求,那么小狼毫&#x…

2026/8/1 7:49:55 閱讀更多
Vue3+SpringBoot影城管理系統(tǒng)架構與實現(xiàn)

Vue3+SpringBoot影城管理系統(tǒng)架構與實現(xiàn)

1. 小徐影城管理系統(tǒng)技術架構解析這套影城管理系統(tǒng)采用了當前企業(yè)級開發(fā)中最主流的"前后端分離微服務"架構模式。前端基于Vue3的Composition API實現(xiàn)響應式界面,后端采用SpringBoot快速構建RESTful API,數(shù)據(jù)持久層通過MyBatis與MySQL交互。這種…

2026/8/1 7:49:55 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產(chǎn)的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設備及通用機械驅動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/1 0:09:33 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產(chǎn)的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/1 0:09:33 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機,適用于自動化設備及通用機械驅動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/1 0:09:33 閱讀更多