C基础知识(7):字符串
在C语言中,字符串实际上是使用null字符'\0' 终止的一维字符数组。因此,一个以null结尾的字符串,包含了组成字符串的字符。
C编译器会在初始化数组时,自动把'\0'放在字符串的末尾。所以不需要手动添加。
下面例子是一些常用的字符串函数的用法。
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 // (1)复制字符串str1 到字符串str2。(str2改变) 6 char str1[] = "This is a C program."; 7 char str2[0]; 8 strcpy(str2, str1); 9 printf("%s\n", str2); // This is a C program. 10 11 // (2)连接字符串str4 到字符串str3 的末尾。(str3改变) 12 char str3[] = "The program is about "; 13 char str4[] = "string."; 14 strcat(str3, str4); 15 printf("%s\n", str3); // The program is about string. 16 17 // (3)返回字符串的长度。 18 int len = strlen(str1); 19 printf("%d\n", len); // 20 20 21 // (4)如果a,b是相同的,则返回0;如果a<b则返回小于0;如果a>b则返回大于 0 22 char str5[] = "2017-03-01"; 23 char str6[] = "2017-05-29"; 24 char str7[] = "2016-12-25"; 25 char str8[] = "2017-03-01"; 26 int res1 = strcmp(str5, str6); 27 int res2 = strcmp(str5, str7); 28 int res3 = strcmp(str5, str8); 29 printf("%d %d %d\n", res1, res2, res3); // -2 1 0(<0 >0 =0) 30 31 // (5)返回一个指针,指向字符串str1中字符h的第一次出现的位置。 32 char *c1 = strchr(str1, 'h'); 33 printf("[*c1] = %c\n", *c1); // h 34 printf("[c1] = %p\n", c1); // 0x7fff5fd0ae01 35 printf("[&str1[1]] = %p\n", &str1[1]); // 0x7fff5fd0ae01 36 37 // (6)返回一个指针,指向字符串str1中字符串is的第一次出现的位置。 38 char *c2 = strstr(str1, "is"); 39 printf("[*c2] = %c\n", *c2); // i 40 printf("[c2] = %p\n", c2); // 0x7fff5fd0ae02 41 printf("[&str1[2]] = %p\n", &str1[2]); // 0x7fff5fd0ae02 42 }