1、如果对全部元素赋初值(即提供全部初始数据),
则定义数组时对第一维的长度可以不指定,
但第二维的长度不能省。
2.gets(字符数组)
(1)格式:gets(字符数组名)
(2)作用:从终端输入一个字符串到字符数组,并且得
到一个函数值。该函数值是字符数组的首地址。
gets函数这里注意 如果和scanf("%s",k);一起出现在程序中。如果gets在scanf在前面
则不执行scanf函数。只执行gets函数 如果在后面 会执行。
while(scanf("%d",&n) != EOF)
{
scanf("%c",&h);
gets(a);
scanf("%c",&h);
gets(b);
scanf("%c",&h);
gets(c);
}
while(scanf("%d",&n) != EOF)
{
scanf("%s",a);
scanf("%s",b);
scanf("%s",c);
}
类似这样子。
当要调用gets的时候,如果前面有输入数组要敲回车,则会将回车赋给gets;
这时要用scanf来输入,可以获取整行的完全信息(无括号)
例:
#include"stdio.h"
main( )
{
char st[15];
printf("input string:\n");
gets(st);
puts(st);
}
可以看出当输入的字符串中含有空格时,输出仍为全部字符串。说明gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。
3.字符串连接函数strcat
(1)格式:strcat(字符数组名1,字符数组名2)
(2)作用:连接两个字符数组中的字符串,把
字符串2接到字符串1 的后面,结果放在字
符数组1中,函数调用后得到一个函数值——
字符数组1的地址。
例: strcat函数的使用
#include"string.h"
main( )
{
static char st1[30]="My name is ";
int st2[10];
printf("input your name:\n");
gets(st2);
strcat(st1,st2);
puts(st1);
}
4.字符串复制函数strcpy
(1)格式:strcpy(字符数组名1,字符数组名2)
(2)作用:将字符串2复制到字符串1中去。字符数名2,
也可以是一个字符串常量。这时相当于把一
个字符串赋予一个字符数组。不能用赋值语
句对整个数组进行赋值。
例: 复制函数的使用
#include"string.h"
main( )
{
static char st1[15],st2[]="C Language";
strcpy(st1,st2);
puts(st1);
printf("\n");
}
5.字符串比较函数strcmp
(1)格式:strcmp(字符数组名1,字符数组名2)
(2)作用:比较字符串1和字符串2。
(3)规则:
A. 对两个字符串自左至右逐个字符相比(按照ASCII码值
大小比较),直到出现不同的字符或遇到`\0`为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。并由函数返回值返回比较结果。
B.如果参加比较的两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为“大”。注意:小写字母比大写字母“大”。
C.比较的结果由函数值带回。
(I)如果字符串1==字符串2,函数值为0;
(II)如果字符串2>字符串2,函数值为一正整数;
(III)如果字符串1<字符串2,函数值为一负整数。
注意:对两个字符串比较时的书写格式。
例如:if (str1=str2) printf("yes");
是不行的;而应该使用
if (strcmp(str1,str2)==0) printf("yes");
6.测试字符串长度函数strlen
(1)格式:strlen(字符数组名)
(2)作用:测试字符串的长度。函数的值为字符串中
的实际长度,不包括`\0`在内。
例:
#include"string.h"
main()
{
int k;
static char st[]="C language";
k=strlen(st);
printf("The lenth of the string is %d\n",k);
}
7.大小写转换函数
(1)strlwr(字符串)
作用:将字符串中大写字母转换成小写字母。
(2)strupr(字符串)
作用:将串中的小写字母转换成大写字母。