C連載16-char類型數組和null字符,以及經常使用兩種方法對比

1、char類型數組和null字符

  • 字符串都是被存儲在char類型數組裏面,字符被存儲在相鄰的存儲單元中,每一個單元存儲一個字符。
  • 每一個字符串末尾會有一個\0,這就是空字符串,C語言用它來標記字符串結束,空字符串不是數字0,他是非打印字符,其ASCII碼是0。
  • 數組定義:同類型的數據元素的有序序列。

1.使用字符串

#include<stdio.h>
#define PARISE "You are an extraordinary being"
#pragma warning(disable:4996)
int D16_1_praisel(void) {
	char name[40];

	printf("What's your name?");
	scanf("%s", name);
	printf("Hello,%s. %s\n", name, PARISE);

	return 0;
}

運行顯示:
16.1git

  • 編譯器會自動給字符串的末尾添加空字符\0

注意點:咱們在進行輸入名字的時候是兩個單詞的時候,好比:Lebron James,那麼scanf()會讀取空格以前的第一個單詞,不會讀取後面的單詞,也可使用方法fgets()後面再介紹。github

2.strlen()函數

  • sizeof運算符,它以字節爲單給出對象的大小。strlen()函數給出字符串中的字符長度。由於1字節存儲一個字符兩者結果可能相同,但本質並非一種計算方式。
#include<stdio.h>
#include<string.h>   /*提供strlen()函數的原型*/
#define PRAISE "You are an extraordinaty being."
#pragma warning(disable:4996)

int D16_2_praise2(void) {
	char name[40];

	printf("What's your name?");
	scanf("%s", name);
	printf("Hello,%s.%s\n", name, PRAISE);
	printf("Your name of %zd letters occupies %zd memory cells.\n", strlen(name), sizeof(name));
	printf("The phrase of praise has %zd letters ", strlen(PRAISE));
	printf("and occupise %zd memory cells.\n", sizeof PRAISE);

	return 0;
}

運行顯示:
16.2數組

注意點:
(1)若是使用ANSI C以前的編譯器,必需要移除這一行:#include<string.h>;以前的編譯器使用的是strings.h這個頭文件;
(2)C99和C11標準專門爲sizeof運算符的返回類型特意添加了%zd轉換說明,對於函數strlen()也一樣適用。早期的C須要使用實際的返回類型(一般是unsigned或unsigned long)
(3)sizeof後面接括號的問題,若是是變量或者字面量,括號無關緊要;若是是類型則須要括號,這裏推薦都使用括號爲好。微信

2、源碼:

相關文章
相關標籤/搜索