文章目录
- 字符串和字符串结束标志
- 字符数组的输入输出
-
- 使用字符串处理函数
- puts函数——输出字符串的函数
- gets函数——输入
- strcat函数——字符串连接符
- strcpy和strncpy函数——字符串复制函数
- strcmp函数——字符串比较函数
- strlen函数——测字符串长度的函数
- strlwr函数——转换为小写的函数
- strupr函数——转换为大写的函数
- 注意
字符串和字符串结束标志
在c语言中是将字符串作为字符数组来处理的,字符串中的字符是逐个放入数组中的。需要理解的是字符串的实际长度与数组的长度的区别;
字符串的实际长度是我们输入字符串的长度,有多少个字符就有多长,而数组的长度是指定义数组时(c[15]这里的15就是数组的长度)所规定的长度;
c系统在用字符数组存储字符串常量时会自动加一个‘\0’作为结束符,有了结束符,系统输出时在遇到’\0’是就会自动结束;有了结束符字符数组的长度就显得没有那么重要了,我们只需要保证定义时数组的长度始终大于字符串的实际长度;
了解结束符后可以用一下方法对字符数组进行定义:
char c[]={"I am happy"};
char c[]="I am happy";
而且,这时候数组c的长度不是10,而是11.因为最后由系统自动加了一个‘\0’;
例:
int main()
{
char c[]="c program.";
printf("%s\n",c);
system("pause");
return 0;
}
得到以下结果:
如果想用一个新字符串代替原有的字符串"c program.",如从键盘输入“hello”分别赋给c数组中前面5个元素,如果不加‘\0’的话代码和结果如下:
int main()
{
char c[]="c program.";
for(int i=0;i<5;i++)
{
c[i]=getchar();
}
printf("%s\n",c);
system("pause");
return 0;
}
结果:
可见新字符串和老字符串连成一片,无法分开,如果在输入“hello”的后面加上一个‘\0’,输出的结果如下:
int main()
{
char c[]="c program.";
for(int i=0;i<5;i++)
{
c[i]=getchar();
}
c[5]='\0';
printf("%s\n",c);
system("pause");
return 0;
}
结果:
字符数组的输入输出
- 逐个输入输出。用“%c”输出或输入一个字符;
- 将整个字符数组一次输入输出,用“%s”格式符,意思是对字符串(string)的输入输出;
用scanf函数输入
int main()
{
char c[6];
scanf("%s",c);
printf("%s\n",c);
system("pause");
return 0;
}
如果想输入多个字符,需要定义多个字符;
int main()
{
char c[5],c2[5],c3[5];
scanf("%s%s%s",c,c2,c3);
printf("%s %s %s\n",c,c2,c3);
system("pause");
return 0;
}
如果只定义一个字符串,按照同样的方式输入则只会输出"How"后面对字符全部为“\0”;因为系统自动把空格字符作为输入的字符串之间的分隔符;
使用字符串处理函数
puts函数——输出字符串的函数
puts(c);
用puts函数只能输出一个
gets函数——输入
gets(c);
strcat函数——字符串连接符
一般形式为strcat(字符数组1,字符数组2);
作用是把字符串2连接到字符串1的后面并把结果放在字符数组1中;
#include <string.h>
char str1[15]={"I am "};
char str2[]={"happy"};
printf("%s",strcat(str1,str2));
I am happy
注意:
- 要保证str1必须足够大,不然会因为字符不够而出错;
- 连个字符最后都有‘\0’,连接的时候取消‘str1后面的\0’,只在新串后面保留‘\0’;
strcpy和strncpy函数——字符串复制函数
一般形式为
strcpy(字符数组1,字符串2)
- 字符数组1必须足够大;
- 字符数组1必须写成数组名的形式(str1),字符串2,可以是字符数组名,也可以是一个字符串常量,如:
strcpy(str1,"china");
- 可以用strncpy函数将字符2中前面n个字符复制到str1中去,如:
strncpy(str1,str2,2);
作用是将str2中最前面的两个字符,取代str1中原有的最前面两个字符,单复制的字符个数不能多于str1中原有的字符。
strcmp函数——字符串比较函数
一般形式为:
strcmp(字符串1,字符串2)
字符串的比较规则是:将两字符串自左向右逐个字符想比较,(按ASCII码值大小比较),知道出现不同的字符或遇到’\0’为止
比较的结果由函数值带回:
- 如果str1和str2相同,则函数返回0;
- 如果str1>str2,则返回一个正数;
- 如果str1<str2,则返回一个负数;
大小的判断是根据第一个不同字符,在ASCII码中的值比较得到
strlen函数——测字符串长度的函数
一般形式为:
strlen(字符数组)
char str[10]="China";
printf("%d\n",strlen(str));
输出的结果:
5
strlwr函数——转换为小写的函数
一般形式为:
strlwr(字符串);
strupr函数——转换为大写的函数
一般形式为:
strupr(字符串)
注意
使用这些函数是要在程序文件开头使用
#include <string.h>
把string.h文件包含到本文件中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)