小小C语言之数组与字符串

来源:互联网 发布:2017淘宝数据魔方 编辑:程序博客网 时间:2024/06/05 06:58

一维数组:

一、一维数组的定义格式为:

类型说明符  数组名[常量表达式];

注解:定义数组时需要注明数组元素的个数,即数组长度,定义时可不赋初值。

    c语言不允许对数组大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值。

二、数组赋值问题

1、在定义数组时,可以给数组赋以全部初值;

2、也可以只给一部分元素赋值,未赋值的为0;

3 如果想使一个数组中全部元素值为0,可以写成:int  a[10]={0,0,0,0,0,0,0,0,0,0};     或int a[10]={0};
     
          不能写成:int a[10]={0*10};

4 、 对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度

三、字符数组

1、对于字符数组初始化,可以逐个字符赋给数组中各元素;例如:char c[10]={‘I’,‘’,‘a’,‘m’,‘’,‘h’,‘a’,‘p’, ‘p’,‘y’} 

也可一次性赋值,例如:char c[10] = {“hello”};为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”——‘\0’。

2、字符数组的输入输出有两种方法:

a、逐个字符输入输出。用格式符“%c”输入或输出一个字符。

b、将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。 

注解:
(1)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
(2)如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。
(3)输出字符不包括结束符′\0′。
(4)如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。 
(5)可以用scanf函数输入一个字符串。

四、字符串处理函数

1. puts函数
其一般形式为:  puts (字符数组)
其作用是将一个字符串(以′\0′结束的字符序列)输出到终端。
假如已定义str是一个字符数组名,且该数组已被初始化为"China"。则执行puts(str);其结果是在终端上输出China。

用puts函数输出的字符串中可以包含转义字符。

2. gets函数
其一般形式为:gets(字符数组)
  其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。
如执行下面的函数:     gets(str)
从键盘输入:
Computer↙将输入的字符串"Computer"送给字符数组str

3. strcat函数
其一般形式为:strcat(字符数组1,字符数组2)
Strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。

  4. strcpy函数 
其一般形式为:strcpy(字符数组1,字符串2) 
strcpy是“字符串复制函数”。
作用:是将字符串2复制到字符数组1中去。例如:
char str1[10],str2[]={″China″};
strcpy(str1,”china”); 

注解: (1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。

     (2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。如:strcpy(str1,″China″); 
     (3)复制时连同字符串后面的′\0′一起复制到字符数组1中。

  5. strcmp函数 
其一般形式为:strcmp(字符串1,字符串2) 
strcmp的作用是比较字符串1和字符串2。
例如:strcmp(str1,str2);strcmp(″China″,″Korea″);  strcmp(str1,″Beijing″);

比较的结果由函数值带回
(1) 如果字符串1=字符串2,函数值为0。
(2) 如果字符串1>字符串2,函数值为一正整数。
(3) 如果字符串1<字符串2,函数值为一负整数。
注意:对两个字符串比较,不能用以下形式:
if(str1>str2) printf(″yes″);
而只能用

if(strcmp(str1,str2)>0) printf(″yes″);

6. strlen函数 
其一般形式为: strlen (字符数组) 
strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括′\0′在内)。
例如:char str[10]={″China″};printf(″%d″,strlen(str));


0 0