C語言字符串
C語言編程中的字符串實際上是一個一維是由一個空字符'\0'終止的字符數組。因此,一個空值終止字符串包含包括字符串後跟空(null)字符。
下麵的聲明和初始化創建由單詞“Hello”的字符串。要在數組的末尾加上空(null)字符,包含字符串的字符數組的大小,實際比在單詞“Hello”的數量多了一個。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
如果按照數組初始化的規則,那麼可以寫上述聲明如下:
char greeting[] = "Hello";
以下是上述定義串的在存儲器演示在 C/C++:
其實,不需要放置空(null)字符在字符串常量的結尾。 C語言編譯器自動將'\0'放在字符串的結尾,當它初始化數組。讓我們嘗試打印提到上麵的字符串:
#include <stdio.h> int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; printf("Greeting message: %s ", greeting ); return 0; }
當上述代碼被編譯和執行時,它會產生一些結果如下:
Greeting message: Hello
C語言支持多種用來操作空值終止字符串的函數:
S.N. | 函數及用途 |
---|---|
1 |
strcpy(s1, s2); 複製字符串s2到字符串s1 |
2 |
strcat(s1, s2); 連接字符串s2到字符串s1的末尾 |
3 |
strlen(s1); 返回字符串s1的長度 |
4 |
strcmp(s1, s2); 返回值為0,s1和s2是相同的; 如果s1<s2返回小於0; 如果s1> s2大於0 |
5 |
strchr(s1, ch); 返回一個指針,指向字符串s1中第一次出現字符ch位置 |
6 |
strstr(s1, s2); 返回一個指針,指向字符串s1中第一次出現的字符串s2位置 |
下麵的例子是利用小部分上述函數功能:
#include <stdio.h> #include <string.h> int main () { char str1[12] = "Hello"; char str2[12] = "World"; char str3[12]; int len ; /* copy str1 into str3 */ strcpy(str3, str1); printf("strcpy( str3, str1) : %s ", str3 ); /* concatenates str1 and str2 */ strcat( str1, str2); printf("strcat( str1, str2): %s ", str1 ); /* total lenghth of str1 after concatenation */ len = strlen(str1); printf("strlen(str1) : %d ", len ); return 0; }
當上述代碼被編譯和執行時,它會產生一些結果如下:
strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10
可以找到C語言字符串相關的函數在C語言標準庫的完整列表