回顾之前所学的格式字符,我们还记得:【注意区分】
输出字符串:char c[] = "China"; printf("%s\n", c);
输出单个字符:printf("%c", c[i]);在数组中,scanf函数中的输入项如果是字符数组名,不要再加地址符&,scanf("%s", c);
接下来是字符串的有关处理函数:
1、输出字符串函数:puts(字符数组)
将一个字符串(以′\0′结束的字符序列)输出到终端,用puts函数输出的字符串中可以包含转义字符。
在用puts输出时将字符串结束标志′\0′转换成′\n′,即输出完字符串后换行。
#include <stdio.h>
int main()
{
char str[] = { "ChinaBeijing" };
puts(str);//输出完字符串以后自动换行
printf("%s",str);
return 0;
}
2、输入字符串函数:gets()
从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
【注意:用puts和gets函数只能输出或输入一个字符串,不能同时输出或输入多个】
#include <stdio.h>
int main()
{
char str[6] = {0};
gets(str);//只能输入5个字符,最后一个字符为\0,字符串结束标志
puts(str);
//printf("%s",str);
return 0;
}
3、字符串连接函数:strcat(字符数组1, 字符数组2)
把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,
函数调用后得到一个函数值——字符数组1的地址。字符数组1必须足够大,以便容纳连接后的新字符串。
连接前两个字符串的后面都有′\0′,连接时将字符串1后面的′\0′取消,只在新串最后保留′\0′。
#include <stdio.h>
int main()
{
char str1[30] = { "People′s Republic of " };
char str2[] = { "China" };
printf("%s", strcat(str1, str2));
return 0;
}
4、字符串复制函数:strcpy(字符数组1, 字符串2) 将字符串2复制到字符数组1中去
字符数组1必须定义得足够大,以便容纳被复制的字符串2。字符数组1的长度不应小于字符串2的长度。 “字符数组1”必须写成数组名形式,“字符串2”可以是字符数组名,也可以是一个字符串常量。若在复制前未对字符数组1初始化或赋值,则其各字节中的内容无法预知,复制时将字符串2和其后的′\0′一起复制到字符数组1中,取代字符数组1中前面的字符,未被取代的字符保持原有内容。
不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量, 它不能改变值,正如数值型数组名不能被赋值一样。可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。将str2中最前面2个字符复制到str1中,取代str1中原有的最前面2个字符。但复制的字符个数n不应多于str1中原有的字符(不包括′\0′)。
#include <stdio.h>
int main()
{
char str1[10], str2[] = "China";
strcpy(str1, str2); //或 strcpy(str1, "China");
printf("%s",str1);
return 0;
}
5、字符串比较函数:strcmp(字符串1, 字符串2) 比较字符串1和字符串2。
比较字符串1和字符串2。 字符串比较的规则是: 将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到′\0′为止。 (1) 如全部字符相同,则认为两个字符串相等; (2) 若出现不相同的字符,则以第1对不相同的字符的比较结果为准。 比较的结果由函数值带回。 (1) 如果字符串1的ASCII码的值与字符串2的ASCII码的值相同,则函数值为0。 (2) 如果字符串1的ASCII码的值>字符串2的ASCII码的值,则函数值为一个正整数。 (3) 如果字符串1的ASCII码的值<字符串2的ASCII码的值,则函数值为一个负整数。
#include <stdio.h>
#include <string.h>
int main()
{
char ch1[] = "abc";
char ch2[] = "fb";
int ret = strcmp(ch1, ch2);
printf("%d\n", ret);
return 0;
}
6、转换为大小写的函数 strlwr(字符串) 将字符串中大写字母换成小写字母。
strupr(字符串) 将字符串中小写字母换成大写字母。
#include <stdio.h>
int main()
{
char a[6] = "hello";
strupr(a);
printf("%s\n", a);
return 0;
}
7、测字符串长度的函数:strlen(字符数组)
测试字符串长度的函数。函数的值为字符串中的实际长度(不包括′\0′在内)。
#include <stdio.h>
#include <string.h>
int main()
{
char str[10] = "China";
printf("%d,%d\n", strlen(str), strlen("China"));
}