W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
字符串常量是一對(duì)雙引號(hào)字符之間的字符序列。
一對(duì)雙引號(hào)之間的任何內(nèi)容都由編譯器解釋為字符串。
以下語(yǔ)句說(shuō)明了這一點(diǎn):
printf("This is a string."); printf("This is on\ntwo lines!"); printf("For \" you write \\\".");
我們可以在字符串末尾添加一個(gè) \0
字符。
#include <stdio.h>
int main(void)
{
printf("The character \0 is used to terminate a string.");
return 0;
}
上面的代碼生成以下結(jié)果。
C沒(méi)有字符串變量類型,沒(méi)有處理字符串的特殊操作符。
C標(biāo)準(zhǔn)庫(kù)提供一系列處理字符串的函數(shù)。
您使用一個(gè)類型為char的數(shù)組來(lái)容納字符串。
你可以這樣聲明一個(gè)數(shù)組變量:
char my_string[20];
此變量可以容納最多包含19個(gè)字符的字符串,因?yàn)楸仨氃试S一個(gè)元素作為終止字符。
您可以使用此數(shù)組來(lái)存儲(chǔ)不是字符串的20個(gè)字符。
編譯器會(huì)自動(dòng)將 \0
添加到每個(gè)字符串常量的末尾。
您可以在聲明它時(shí)初始化一個(gè)字符串變量:
char my_string[] = "This is a string.";
這里你沒(méi)有明確定義數(shù)組維度。
編譯器將為維度賦值一個(gè)值,該值足以容納初始化字符串常量。
在這種情況下,它將是18.17個(gè)元素是字符,一個(gè)額外的元素是為終止\0。
您可以使用字符串初始化char類型的元素?cái)?shù)組的一部分。
例如:
char str[40] = "To be";
編譯器會(huì)將前五個(gè)元素str [0]初始化為str [4],其中字符串的字符為常量,str [5]將包含空字符'\ 0'。
為陣列的所有40個(gè)元素分配內(nèi)存空間。
初始化char數(shù)組并將其聲明為常量是處理標(biāo)準(zhǔn)消息的好方法:
const char message[] = "This is a test.";
要引用存儲(chǔ)在數(shù)組中的字符串,請(qǐng)使用數(shù)組名稱。
例如,要使用printf()函數(shù)輸出存儲(chǔ)在消息中的字符串,可以這樣寫:
printf("\nThe message is: %s", message);
%s
規(guī)范用于輸出一個(gè)以null結(jié)尾的字符串。
字符串格式化
#include <stdio.h>
#define BLURB "Authentic imitation!"
int main(void)
{
printf("[%2s]\n", BLURB);
printf("[%24s]\n", BLURB);
printf("[%24.5s]\n", BLURB);
printf("[%-24.5s]\n", BLURB);
return 0;
}
上面的代碼生成以下結(jié)果。
以下代碼顯示如何獲取字符串的長(zhǎng)度。
#include <stdio.h>
int main(void) {
char str1[] = "This is a test.";
char str2[] = "This is another test.";
unsigned int count = 0; // Stores the string length
while (str1[count] != "\0") // Increment count till we reach the
++count; // terminating character.
printf("The length of the string \"%s\" is %d characters.\n", str1, count);
count = 0; // Reset count for next string
while (str2[count] != "\0") // Count characters in second string
++count;
printf("The length of the string \"%s\" is %d characters.\n", str2, count);
return 0;
}
上面的代碼生成以下結(jié)果。
您可以存儲(chǔ)一大堆字符串,并通過(guò)單個(gè)變量名稱引用其中的任何一個(gè)。
char my_strings[3][32] = { "Hi", "Hello.", "How are you." };
雖然您必須在字符串?dāng)?shù)組中指定第二個(gè)維度,但您可以將其留給編譯器以確定有多少個(gè)字符串。您可以將以前的定義寫成:
char my_strings[][32] = { "Hi", "Hello.", "How are you." };
您可以使用以下代碼輸出三個(gè)my_strings:
for(unsigned int i = 0 ; i < sizeof(my_strings)/ sizeof(my_strings[0]) ; ++i) printf("%s\n", my_strings[i]);
以下代碼顯示了如何查找二維數(shù)組中的字符串?dāng)?shù)和每個(gè)字符串的長(zhǎng)度:
#include <stdio.h>
int main(void)
{
char str[][70] = {
"hi",
"hgci.cn",
"this is a test.",
};
unsigned int count = 0; // Length of a string
unsigned int strCount = sizeof(str)/sizeof(str[0]); // Number of strings
printf("There are %u strings.\n", strCount);
// find the lengths of the strings
for(unsigned int i = 0 ; i < strCount ; ++i)
{
count = 0;
while (str[i][count])
++count;
printf("The string:\n \"%s\"\n contains %u characters.\n", str[i], count);
}
return 0;
}
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: