3.字符数组

a.怎样定义字符数组

用来存放字符数据的数组是字符数组。
字符数组中的一个元素存放一个字符。
char c[10];
c[0]='I'; c[1]=''; c[2]='a'; c[3]='m'; c[4]='';
c[5]='h'; c[6]='a'; c[7]='p'; c[8]='p'; c[9]='y';

b.字符数组的初始化

char c[10]={'I','','a','m','','h','a','p','p','y'};

空字符(即'\0')

定义和初始化二维字符数组,例如:
char diamond[5][5]={{'','','*'},{'','*','','*'},
       {'*','','','','*'},{'','*','','*'},{'','','*'}};

c.怎样引用字符数组中的元素

输出一个已知的字符串

 
  
  1. #include "stdafx.h"  
  2.  
  3.  
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.  char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};  
  7.  int i;  
  8.  for(i=0;i<15;i++)  
  9.   printf("%c",c[i]);  
  10.  printf("\n");  
  11.  return 0;  

输出一个菱形图

 
  
  1. #include "stdafx.h"  
  2.  
  3.  
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.  char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},  
  7.   {' ','*',' ','*',},{' ',' ','*'}};  
  8.  int i,j;  
  9.  for (i=0;i<5;i++)  
  10.  {for (j=0;j<5;j++)  
  11.  printf("%c",diamond[i][j]);  
  12.  printf("\n");  
  13.  }  
  14.  return 0;  

d.字符串和字符串结束标志
C语言规定了一个"字符串结束标志",以字符"\0"作为结束标志。

e.字符数组的输入输出
//逐个字符输入输出。用"%c"输入或输出一个字符。
//将整个字符串一次输入或输出。用"%s"格式符,对字符串(string)的输入输出。

f.使用字符串处理函数
1.puts函数 - 输出字符串的函数
其一般形式为
puts(字符数组)
其作用是将一个字符串(以'\0'结束的字符序列)输出到终端。

2.gets函数 - 输入字符串的函数
其一般形式为
gets(字符数组)
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。

3.strcat函数 - 字符串连接函数
其一般形式为
strcat(字符数组1,字符数组2)
strcat是STRing CA Tenate(字符串连接)的缩写。
其作用是把两个字符数组中的字符串连接起来,

4.strcpy和strncpy函数 - 字符串复制函数
其一般形式为
strcpy(字符数组1,字符串2)
strcpy是STRingCoPY(字符串复制)的简写。
它表示"字符串复制函数",作用是将字符串2复制到字符数组1中去。

5.strcmp函数 - 字符串比较函数
其一般形式为
strcmp(字符串1,字符串2)
strcmp是STRing CoMPare(字符串比较)的缩写。
它的作用是比较字符串1和字符串2.

6.strlen函数 - 测字符串长度的函数
其一般形式为
strlen(字符数组)
strlen是STRing LENgth(字符串长度)的缩写。它是测试字符串长度的函数。
函数的值为字符串中的实际长度(不包括'\0'在内)

7.strlwr函数 - 转换为小写的函数
其一般形式为
strlwr(字符串)
strlwr是STRing LoWeRcase(字符串小写)的缩写。
函数的作用是将字符串中大写字母转换成小写字母。

8.strupr函数 - 转换为大写的函数
其一般形式为
strupr(字符串)
strupr是STRing UPpeRcase(字符串大写)的缩写。

g.字符数组应用举例
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

 
  
  1. #include "stdafx.h"  
  2.  
  3.  
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.  char string[81];  
  7.  int i,num=0,word=0;  
  8.  char c;  
  9.  gets_s(string);  
  10.  for(i=0;(c=string[i])!='\0';i++)  
  11.   if(c==' ') word=0;  
  12.   else if(word==0)  
  13.   {word=1;  
  14.  num++;  
  15.  }  
  16.  printf("There are %d words in this line.\n",num);  
  17.  return 0;  

有3个字符串,要求找出其中最大者。

 
  
  1. #include "stdafx.h"  
  2. #include "string.h"  
  3.  
  4.  
  5. int _tmain(int argc, _TCHAR* argv[])  
  6. {  
  7.  char str[3][20];  
  8.  char string[20];  
  9.  int i;  
  10.  for (i=0;i<3;i++)  
  11.   gets_s(str[i]);  
  12.  if (strcmp(str[0],str[1])>0)  
  13.   strcpy_s(string,str[0]);  
  14.  else 
  15.   strcpy_s(string,str[1]);  
  16.  if(strcmp(str[2],string)>0)  
  17.   strcpy_s(string,str[2]);  
  18.  printf("\nthe largest string is:\n%s\n",string);  
  19.  return 0;