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.怎样引用字符数组中的元素
输出一个已知的字符串
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};
- int i;
- for(i=0;i<15;i++)
- printf("%c",c[i]);
- printf("\n");
- return 0;
- }
输出一个菱形图
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},
- {' ','*',' ','*',},{' ',' ','*'}};
- int i,j;
- for (i=0;i<5;i++)
- {for (j=0;j<5;j++)
- printf("%c",diamond[i][j]);
- printf("\n");
- }
- 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.字符数组应用举例
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- char string[81];
- int i,num=0,word=0;
- char c;
- gets_s(string);
- for(i=0;(c=string[i])!='\0';i++)
- if(c==' ') word=0;
- else if(word==0)
- {word=1;
- num++;
- }
- printf("There are %d words in this line.\n",num);
- return 0;
- }
有3个字符串,要求找出其中最大者。
- #include "stdafx.h"
- #include "string.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- char str[3][20];
- char string[20];
- int i;
- for (i=0;i<3;i++)
- gets_s(str[i]);
- if (strcmp(str[0],str[1])>0)
- strcpy_s(string,str[0]);
- else
- strcpy_s(string,str[1]);
- if(strcmp(str[2],string)>0)
- strcpy_s(string,str[2]);
- printf("\nthe largest string is:\n%s\n",string);
- return 0;
- }