07 |
您所在的位置:网站首页 › c语言从哪里输入 › 07 |
知识要点 8.1 单个字符的输入输出 8.2 字符数组与字符串 8.3 字符串的输入和输出函数 8.4 字符串操作函数 8.5 二维字符串数组 8.1 单个字符的输入输出 C语言头文件“stdio.h”中定义了两个专门用于单个字符输入输出的函数getchar()和putchar()。 一、字符输入函数getchar() 作用是从输入设备(如键盘)读取一个字符。 函数getchar()没有参数,其一般形式为 getchar( );其执行结果是从输入设备得到一个字符。例如: char c; c=getchar();从键盘输入:a 则字符型变量c等于字符’a’。上式等价于 scanf(“%c”,&c);(1)getchar()一次只能接收一个字符。 例如scanf(“%c%c”,&c1,&c2);语句如果用getchar()函数实现只能写成: c1=getchar();c2=getchar();(2)getchar()可以接收回车字符。而scanf()将回车作为数据的间隔符或结束符。 (3)getchar()接收的字符可以不赋给任何变量。 二、字符输出函数putchar() putchar()函数作用是将一个字符输出到输出设备(如显示器)。它的一般形式为 putchar(字符型或整型数据); 例如:char c=’A’; putchar(c);结果是输出字符变量c的值。 函数putchar()的可以输出字符型变量、整型变量、字符型常量以及控制字符和转义字符。 putchar()函数一次只能输出一个字符,printf()函数可以同时输出多个字符 8.2 字符数组与字符串 字符数组 一个数组的元素是字符型,则该数组为字符数组 字符数组的赋值可以采用三种方法: char c[8]; c[0]=’I’; c[1]=’ ’; c[2]=’l’; c[3]=’i’; c[4]=’k’; c[5]=’e’; c[6]=’ ’; c[7]=’C’; char c[8]; int i; for(i=0;i字符数组除了在定义时初始化,只能一个元素一个元素的赋值。 字符数组中的全部内容输出,也只能一个元素一个元素的输出。 for(i=0;i输入: char c[9]; c[0]=’I’; c[1]=’ ’; c[2]=’l’; c[3]=’i’; c[4]=’k’; c[5]=’e’; c[6]=’ ’; c[7]=’C’;c[8]=’\0’; char c[9]; int i; for(i=0;istrcat(字符数组1,字符串2)字符数组1不能是字符串常量,并且必须足够大,以便可以继续容纳字符串2的内容。 连接前字符数组1的’\0’将被字符串2覆盖,连接后生成的新的字符串的最后保留一个’\0’。 举一反三 :编写一个函数string_link(char str1[],char str2[ ])完成strcat()的功能。 strcmp(字符串1,字符串2)作用是比较字符串1和字符串2。两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小),直到字符不同或者遇见’\0’为止。 如果全部字符都相同,则返回值为0。如果不相同,则返回两个字符串中第一个不相同的字符的ASCII码值的差,即串1大于串2时函数值为正,否则为负。 char str1[]=”abc”,str2[]=”abc”; char str3[]=”aBc”,str4[]=”cbcde”; printf(“%d,%d,%d\n”,strcmp(str1,str2),strcmp(str1,str3),strcmp(str1,str4)); 输出结果为:0,32,-2strcmp(字符串1,字符串2) #include #include int string_compare(char string1[],char string2[]) { int i=0; while(string1[i]= =string2[i]&&string1[i]!='\0') i++; return string1[i]-string2[i]; } void main() { char str1[]=”abc”,str2[]=”abc”; printf(“%d, %d\n”, strcmp(str1,str2),string_compare(str1,str2));} 运行结果 : 0,0strlwr(字符串) strlwr()的作用是将字符串中大写字母转换成小写字母。例如: printf(“%s”,strlwr(“BeiJing”)); 输出:beijingstrupr(字符串) strupr()的作用是将字符串中小写字母转换成大写字母。 问题 输入全班同学的姓名,如何定义? 一个同学的姓名用 一维字符数组表示 char name[30]=“Jacky”多个同学可以用 二维字符数组表示 char name[2][30]={“Jacky”,”Andy”}8.5 二维字符串数组 一维字符数组中存放一个字符串, char s1[20]=”John”如果有多个字符串时,例如1个班级的学生的姓名,则需要用到二维字符串,如name[30][20]可以描述30名学生的姓名(假设姓名不超过20个字符)。 如果有2个班级各30名学生,那么它们的姓名可以使用三维数组name[2][30][20]。 二维字符串数组的初始化 二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式,如: char name[2][10]={{’J’,’o’,’h’,’n’,’\0’},{’M’,’a’,’r’,’r’,’y’,’\0’}}; char name[2][10]={{”John”},{”Marry”}}; char name[2][10]={”John”,”Marry”};二维字符串数组的赋值和引用 由于二维数组可以看作是一个特殊的一维数组,它的数组元素是一个一维数组。所以二维字符串数组可以看作是这样一个一维数组,它的元素是一个字符串。 二维数组name[2][10]由name[0]和name[1]组成,name[0]代表字符串”John”、name[1]代表字符串”Marry”。 程序L8_9.C功能:从键盘输入三个学生姓名,并输出。 #include #include void main() { char name[3][30]; int i; for (i=0;i0) {strcpy(str,name[1]); strcpy(name[1],name[2]); strcpy(name[2],str); } for(i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |