1. 程式人生 > >字串長度解析以及字串的幾種列印方法

字串長度解析以及字串的幾種列印方法

字串

何為字串,估計很多小夥伴都知道這個東西但不清楚它的定義,其實很簡單,就一句話:

由雙引號(Double Quote)引起來的一串字元稱為字串字面值(String Literal),或者簡稱字串。 注意:字串不是一種資料型別喲,資料型別有:整形,浮點型,字元型.......

“i love you” 這就是一個字串,我們必須注意,每個字串都有一個結束標誌,即\0,好了,那大家覺得我舉出的這個字串的大小為多少呢? 可能答案:8   10    11 多說無益,先上一段程式碼把結果呈現給大家:  

#include<stdio.h>
#include<string.h>    //用strlen函式需新增標頭檔案 
int main()
{
	char s[]="i love you";          //將字串存放於一個char型的陣列 
	printf("%d",strlen(s));        //strlen函式用來測字串長度 
	return 0;
} 

結果:大家可以看到,結果為十,為八的數落下的2個空格,為11的把\0也算入字串長度裡了,所以根據以上結果,字串長度不計入末尾的\0。

字串的列印 想要列印字串,則先應將它儲存起來,存放字串常用方法為將它存放在一個字元型的數組裡面,還可以將一個指標指向一個字串的首地址,下面呈上一段詳細程式碼:  

#include<stdio.h>
int main()
{
	/*三種存放方法*/
	char d[] = { 'i', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u' };
	char s[] = "i love you";          //將字串存放於一個char型的陣列 
	char *p = "i love you";

	printf("%s\n", s);    //正確輸出  1
	printf("%s\n", p);    //正確輸出  2

	printf("%s\n",d);  //錯誤輸出

	for (int i = 0; i<sizeof(d)/sizeof(d[0]); i++)  //正確輸出  3
		printf("%c", d[i]);

	return 0;
}

結果:

從程式碼中可以看到三種存放方法,那為啥第一種方法的輸出會輸出錯誤碼呢。 其實原因就是在第一種存放中,末尾沒有手動新增一個'\0'的字元,所以沒有結束標誌,就會亂碼,第二種是因為字串末尾會自動以'\0'結束,所以輸出正確。 正確輸出3則是一個一個打印出來,不需要新增'\0'。

下面是添上後的程式碼:  

char d[]={'i',' ','l','o','v','e',' ','y','o','u','\0'};

結果: