網(wǎng)站首頁 編程語言 正文
一.定義字符串
c語言雖然不像其它高級語言一樣有內(nèi)置的字符串類型 ,但是卻有字符串這個概念,即字符串常量。由雙引號引起來的0個或者多個字符構(gòu)成的序列被稱作字符串常量。比如:
? ?"hello!"?,"1593\a\147"? ?" "
字符串的結(jié)束標(biāo)志是一個'\0'的轉(zhuǎn)義字符,他不計入字符串長度。
二.字符數(shù)組
1.定義
用來存放字符量的數(shù)組成為字符數(shù)組。在數(shù)組元素中一個元素內(nèi)存放一個字符。定義字符數(shù)組的方法與定義字符型數(shù)組的方法類似。
其定義的一般形式是:char數(shù)組名[數(shù)據(jù)長度]
例如:char c[10];
2.初始化
字符數(shù)組的初始化與數(shù)值型數(shù)組初始化沒有本質(zhì)區(qū)別,但它除了可以逐個給數(shù)組元素賦予字符外,也可以直接用字符串對其初始化。
(1)用字符常量逐個初始化數(shù)組。例如:
char a[]={'a','b','c','d','f'};這五個字符依次賦值給a[0]~a[4]這五個元素。此時a數(shù)組的長度自動定為5.
(2)字符串常量初始化數(shù)組,例如:
char a[]={'a','b','c','d','f'}可寫為char a[]={"abcdf"}或去掉{}寫為char a[]="abcdf”;
注意:此時數(shù)組的長度不是9,而是10.因為字符串常量的最后有系統(tǒng)加上一個‘\0’
3.輸入輸出
字符數(shù)組的輸入(1)用getchar()或scanf()的'%c'格式符對數(shù)組進(jìn)行字符賦值。
對于數(shù)組a[10]:用getchar()賦值:for(i=0;i<10;i++)a[i]=getchar();用scanf()賦值:for(i=0;i<10;i++)scanf("%c",&a[i]);
(2)用scanf()的'%s'格式對數(shù)組賦值。
還是對于數(shù)組a[10]:scanf("%s",a);或scanf("%s“,&a[0]);輸入”C?program“并回車時,a數(shù)組會自動包含一個以”\0“結(jié)尾的字符串”C?program“。
gets(str)與scanf("%s",?str)的區(qū)別:
gets(str)允許輸入的字符串含有空格
scanf("%s",?str)不允許含有空格
注意:由于scanf()和gets()無法知道字符串s大小,必須遇到換行符或讀到文件結(jié)尾為止才接收輸入,因此容易導(dǎo)致字符數(shù)組越界(緩沖區(qū)溢出)的情況,所以我們在定義char型數(shù)組時,應(yīng)該確保其空間足夠大。
?
字符數(shù)組的輸出(1)用putchar()或printf()的‘%c’格式符對數(shù)組進(jìn)行字符賦值。
例如,對于數(shù)組a[10]:用putchar()賦值:for(i=0;i<10;i++)a[i]=putchar();用printf()賦值:for(i=0;i<10;i++)printf("%c",a[i]);輸出結(jié)果為:c?program?
(2)用printf()的'%s'格式對數(shù)組賦值。
還是對于數(shù)組a[10];printf("%s",a);輸出結(jié)果為:c?program
4.strlen()
功能:計算指定指定字符串的長度,不包含字符串結(jié)束符‘\0’。
char str[] = "helloworld";
printf("%d\n", strlen(str));
printf("%d", sizeof(str) / sizeof(str[0]));
結(jié)果表示為
sizeof(...)和strlen(...)的區(qū)別
?sizeof(...)是運(yùn)算符,參數(shù)可以是數(shù)組、指針、類型、對象、函數(shù)等。具體而言,當(dāng)參數(shù)分別如下時,sizeof返回的值表示的含義如下:
????數(shù)組——編譯時分配的數(shù)組空間大小;
????指針——存儲該指針?biāo)玫目臻g大小(存儲該指針的地址的長度,是長整型,應(yīng)該為4);
????類型——該類型所占的空間大小;
????對象——對象的實際占用空間大小;
????函數(shù)——函數(shù)的返回類型所占的空間大小。函數(shù)的返回類型不能是void。
?
它的功能是:獲得保證能容納實現(xiàn)所建立的最大對象的字節(jié)大寫。
strlen(...)是函數(shù),要在運(yùn)行時才能計算。參數(shù)必須是字符型指針(char*)。當(dāng)數(shù)組名作為參數(shù)傳入時,實際上數(shù)組就退化成指針了。
????它的功能是:返回字符串的長度。該字符串可能是自己定義的,也可能是內(nèi)存中隨機(jī)的,該函數(shù)實際完成的功能是從代表該字符串的第一個地址開始遍歷,直到遇到結(jié)束符NULL。返回的長度大小不包括NULL。
?
?
原文鏈接:https://blog.csdn.net/m0_71158751/article/details/125899447
相關(guān)推薦
- 2022-06-08 .Net?Core?進(jìn)程守護(hù)之Supervisor使用詳解_實用技巧
- 2022-03-14 1709 - Index column size too large. The maximum co
- 2022-11-01 使用react在修改state中的數(shù)組和對象數(shù)據(jù)的時候(setState)_React
- 2022-06-29 Oracle中執(zhí)行動態(tài)SQL_oracle
- 2023-11-20 Linux、jetson nano、JTX、英偉達(dá)、nVidia查看cuda版本
- 2022-10-30 C語言算法練習(xí)之?dāng)?shù)組元素排序_C 語言
- 2022-10-03 React?Native?中實現(xiàn)倒計時功能_React
- 2022-07-07 C++實現(xiàn)數(shù)組中元素組合出最大值_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支