日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

C語言中字符串詳解

作者:小劉不要禿頭 更新時間: 2022-07-22 編程語言

一.定義字符串

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

欄目分類
最近更新