C语言__字符串

时间:2022-03-19 00:23:42

C语言__字符串

C语言中的字符串简介

在C语言中,我们可以用字符数组来存储字符串。

字符串可以看做是一个特殊的字符数组,为了跟普通的字符数组区分开来,应该在字符串的尾部添加了一个结束标志'\0'。'\0'是一个ASCII码值为0的字符,是一个空操作符,表示什么也不干。所以采用字符数组存放字符串,赋值时应包含结束标志'\0'。

C语言__字符串

尾部有个'\0',如果没有这个结束标记,说明这个字符数组存储的并不是字符串

字符串的初始化:

 1 char a[3] = {'m', 'j', '\0'};
 2 
 3 char b[3];
 4 b[0] = 'm';
 5 b[1] = 'j';
 6 b[2] = '\0';
 7 
 8 char c[3] = "mj";//当我们使用类似第8行的初始化方式时,系统会自动在字符串尾部加上一个\0结束符
 9 
10 char d[] = "mj";
11 
12 char e[20] = "mj";

字符串的输出

stdio.h中两个函数来输出字符串,分别是printf和puts函数

char a[3] = {'m', 'j', '\0'};

printf("%s", a);   
//%s表示期望输出一个字符串,因此printf函数会从b的首地址开始按顺序输出字符 //一直到\0字符为止,因为\0是字符串的结束标记。

puts(a);   //puts函数输出一个字符串后会自动换行

字符串的输入:

stdio.h中有2个函数可以用来接收用户输入的字符串,分别是scanf和gets

char a[10];
scanf("%s", a);//scanf函数会从a的首地址开始存放用户输入字符,存放完毕后,系统会自动在尾部加上一个结束标记\0


gets(a);
//gets跟scanf一样,会从a的首地址开始存放用户输入的字符,存放完毕后,系统会自动在尾部加上一个结束标记\0。

//gets一次只能读取一个字符串,scanf则可以同时读取多个字符串

//gets可以读入包含空格、tab的字符串,直到遇到回车为止;scanf不能用来读取空格、tab

字符串数组:

char names[2][10] = { {'J','a','y','\0'}, {'J','i','m','\0'} };

char names2[2][10] = { {"Jay"}, {"Jim"} };

char names3[2][10] = { "Jay", "Jim" };

//字符串数组看作是一维数组,它的元素是字符串。字符串数组names由字符串"Jay"和字符串"Jim"构成。

putchar函数

stdio.h头文件中声明的。

putchar(65); // A
putchar('A'); // A
int a = 65;
putchar(a); // A
//putchar函数智能输出一个字符

getchar函数

stdio.h头文件中声明的。

char c;
c = getchar();
getchar函数可以读入空格、TAB,直到遇到回车为止。scanf则不能读入空格和TAB。
getchar一次只能读入一个字符。scanf则可以同时接收多个字符。
getchar还能读入回车换行符,这时候你要敲2次回车键。第1次敲的回车换行符被getchar读入,第2次敲的回车键代表输入结束。

字符串处理函数

在string.h头文件中声明的,使用前要包含这个头文件。

strlen函数

int size = strlen("mj"); // 长度为2
 
char s1[] = "lmj";
int size1 = strlen(s1); // 长度为3
 
char s2[] = {'m', 'j', '\0', 'l', 'm', 'j', '\0'};
int size2 = strlen(s2); // 长度为2

//这个函数可以用来测量字符串的字符个数,不包括\0

strcpy函数

char s[10];
strcpy(s, "lmj");

//strcpy函数会将右边的"lmj"字符串拷贝到字符数组s中。 //从s的首地址开始,逐个字符拷贝,直到拷贝到\0为止。当然,在s的尾部肯定会保留一个\0。

strcat函数

char s1[30] = {'L', 'm', 'j', '\0', 'L', 'o', 'v', 'e', '\0'};
strcat(s1, "OC");
printf("%s", s1);

//strcat函数会将右边的"OC"字符串拼接到s1的尾部,最后s1的内容就变成了"LOVEOC"

strcmp函数

char s1[] = "abc";
char s2[] = "abc";
char s3[] = "aBc";
char s4[] = "ccb";

printf("%d, %d, %d", strcmp(s1, s2), strcmp(s1, s3), strcmp(s1, s4));

//这个函数可以用来比较2个字符串的大小 //两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小),直到字符不相同或者遇见'\0'为止。 //如果全部字符都相同,则返回值为0。如果不相同,则返回两个字符串中第一个不相同的字符ASCII码值的差。 //即字符串1大于字符串2时函数返回值为正,否则为负。