網(wǎng)站首頁 編程語言 正文
一.定義字符串
c語言雖然不像其它高級語言一樣有內(nèi)置的字符串類型 ,但是卻有字符串這個概念,即字符串常量。由雙引號引起來的0個或者多個字符構(gòu)成的序列被稱作字符串常量。比如:
? ?"hello!"?,"1593\a\147"? ?" "
字符串的結(jié)束標志是一個'\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ù)組進行字符賦值。
對于數(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ù)組進行字符賦值。
例如,對于數(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(...)是運算符,參數(shù)可以是數(shù)組、指針、類型、對象、函數(shù)等。具體而言,當參數(shù)分別如下時,sizeof返回的值表示的含義如下:
????數(shù)組——編譯時分配的數(shù)組空間大小;
????指針——存儲該指針所用的空間大小(存儲該指針的地址的長度,是長整型,應(yīng)該為4);
????類型——該類型所占的空間大小;
????對象——對象的實際占用空間大小;
????函數(shù)——函數(shù)的返回類型所占的空間大小。函數(shù)的返回類型不能是void。
?
它的功能是:獲得保證能容納實現(xiàn)所建立的最大對象的字節(jié)大寫。
strlen(...)是函數(shù),要在運行時才能計算。參數(shù)必須是字符型指針(char*)。當數(shù)組名作為參數(shù)傳入時,實際上數(shù)組就退化成指針了。
????它的功能是:返回字符串的長度。該字符串可能是自己定義的,也可能是內(nèi)存中隨機的,該函數(shù)實際完成的功能是從代表該字符串的第一個地址開始遍歷,直到遇到結(jié)束符NULL。返回的長度大小不包括NULL。
?
?
原文鏈接:https://blog.csdn.net/m0_71158751/article/details/125899447
相關(guān)推薦
- 2022-02-16 C語言實現(xiàn)wave波形_C 語言
- 2022-03-25 ASP.NET?Core實時庫SignalR簡介及使用_實用技巧
- 2022-12-30 React淺析Fragments使用方法_React
- 2022-03-27 Android實現(xiàn)圓形菜單懸浮窗_Android
- 2022-12-11 Redhat持久化日志實戰(zhàn)示例詳解_相關(guān)技巧
- 2024-02-17 pytorch花式索引提取topk的張量
- 2023-02-17 Django框架ORM操作數(shù)據(jù)庫不生效問題示例解決方法_python
- 2022-04-14 python實現(xiàn)購物車小程序_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- 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被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支