计算机408考研先导课---C语言难点2

目录

一、字符型数据与字符串型数据的比较

1、字符型数据特点

2、字符串型数据特点

二、字符数组

1、定义      

2、输入输出

①输入

②输出

3、字符处理函数

①put函数

②gets函数

③strcat函数

④strcpy函数

⑤strcmp函数

⑥strlen函数

⑦strlwr函数

⑧strupr函数


一、字符型数据与字符串型数据的比较

我们先来依次看看二者的特点:

1、字符型数据特点

①用单引号包含

②仅能包含一个字符

③以“\”开头的字符,称为转义字符,例如:

\n \t \r \\
换行 横向跳格 回车 反斜杠

④字符型数据与整型数据之间可以相互转换、相互通用,例如

#include

int main(){
	char c='a';
	char c1= c-32;
	printf("%c",c1);
	
	return 0;
} 

        上述代码输出的结果为A,因为C语言的字符使用的就是ASCII字符集,总共有128个,每个相应的ASCII码都能对应唯一的表示一个字符:
        其中,数字’0’、‘1’、‘2’、…、‘9’、大写字母’A’、‘B’、‘C’、…、‘Z’、小写字母‘a’、‘b’、‘c’、…都是按升序排列的。也就是说'A'+1=‘B’。
        注意: 数字和数字字符不一样的,带单引号的是字符,例如:1是整型数字,而’1’是字符,其ASCII码是49,即按整型输出的话就是49,按字符型数据输出就是1。如下述代码所示:

#include

int main(){
	char c='1';
	int c1=c;
	printf("c=%c,c1=%d",c,c1);
	
	return 0;
} 

 结果为:

2、字符串型数据特点

①用双引号括起来 char c=“a”;则c是一个字符串常量而不是字符常量。

②不能将字符串数据赋予给字符型数据

③存储方式:在C语言中,以字符“\0”作为字符串结束的标志

例如HELLO的存储占6个字符,即H E L L O \0,但是\0在输出时不显示

二、字符数组

1、定义      

 我们一次性将字符变量讲透,字符数组是由字符型数据组成的数组,赋值时,要用''把单个字符括起来,如

char c[5]={'W','Q','L','T','Z'};

注意:若初值个数小于数组长度,则只将这些字符赋值给数组中前面的元素,其余用空字符填充(空字符即\0)

同理,由于它仍然是字符,依然可以输入不带引号的数字,对照ASCII码,翻译出真实的信息,如下述代码所示:

#include

int main(){
char std1[11]={76,84,90,\0,76,111,118,101,\0,87,81 };
printf("%s",std1);
	
	return 0;
} 

请大家用ASCII对照表“翻译”一下,小编想表示的真实信息。

计算机408考研先导课---C语言难点2_第1张图片

2、输入输出

①输入

有两种方式:

A、逐个输出

B、一次性用%s格式符输出

printf("%s",c);//正确输出
printf("%s",c[0]);//错误输出,应该改为printf("%c",c[0]);

使用一次性输出,将会输出到‘\0’结束,例如执行下述代码:

#include

int main(){
	char c[10]="Hello\0WHU";
	
	printf("%s",c);
	
	return 0;
} 

最终输出的结果仅仅为Hello。

②输出

同理,我们也可以scanf(“%s”,c);进行值的输入

例如执行下述代码:

char std1[5];
char std2[5];
scanf("%s%s",std1,std2);

 如果输入 So What,那么std1会变成S o \0 \0 \0,std2会变成 W h a t \0。

        若此时有一个char std3[8];特别能吃,它想把So What 全部吃掉,全部装入自己的胃里,则我们需要输入 So\0What。



3、字符处理函数

①put函数

作用:输出,可以用printf替代

形式:puts(字符数组)

#include
#include


int main(){
char std1[11]={76,84,90,' ',76,111,118,101,' ',87,81 };
puts(std1);

	
	return 0;
} 

②gets函数

作用:输入

形式:gets(字符数组)

#include
#include


int main(){
char std2[11];
gets(std2);	
return 0;
} 

③strcat函数

作用:连接两个字符数组中的字符串,字符数组2接到字符数组1后,返回字符数组1的地址

形式:strcat(字符数组1,字符数组2)

#include
#include


int main(){
char std1[]={"I will protect"}; 

char std2[]={" WQ "};
char std3[]={"all my life"};

strcat(std1,std2);
strcat(std1,std3);	
	

printf("%s",std1);
	
	return 0;
} 

所以每次连接都是连接到std1的后边,是std1被修改了,最终输出的结果为:

计算机408考研先导课---C语言难点2_第2张图片

 

④strcpy函数

作用:将字符串2复制到字符数字1里去,其中字符数组1的长度必须大于等于字符数组2

形式:strcpy(字符数组1,字符串2)

特殊形式:strcpy(字符数组1,字符串2,n)//其中n代表一个整数,意味着将字符串2前面的n个字符复制到字符数组1中去。

注意:不能用赋值语句将一个常量或者字符数组赋值给另一个字符数组

#include
#include


int main(){
char std1[]={"LTZ felt lonely"}; 
strcpy(std1,"WQ appears in LTZ’s life"); 
printf("%s",std1);	
	return 0;
} 

这就好比,LTZ之前很孤独,但是WQ的出现让LTZ内心的孤独一扫而空

⑤strcmp函数

作用:比较两个字符串,若出现不同字符,则通过第一个不同字符的ASCII码的大小判断谁打谁小

形式:strcmp(字符串1,字符串2)

如果二者相等,则函数值为零

如果字符串1大于字符串2,则函数值为正数

如果字符串1小于字符串2,则函数值为负数

例如:

#include
#include


int main(){
char std1[]={"True Love "}; 
char std2[]={"Money"};

if(strcmp(std1,std2)>0)
printf("真爱更珍贵");
else if(strcmp(std1,std2)<0)
printf("金钱更珍贵");
 
	
	return 0;
} 

很明显,True love比Money更加珍贵,真诚才是永远的必杀技

⑥strlen函数

作用:测试字符串长度,不包括\0

形式:strlen(字符数组)

比如说下述代码

#include
#include


int main(){
char std1[]={"WQ<Z"}; 
int a=strlen(std1); 
printf("%d",a);	
	return 0;
} 

没错 WQ<Z很6,特别6,非常6(疯狂点头)

⑦strlwr函数

作用:字符串中的大写字母转换为小写字母

形式:strlwr(字符串)

⑧strupr函数

作用:字符串中的小写字母转换为大写字母

形式:strupr(字符串)

        好的,本期的C语言重难点就到这里为止啦,走过路过不要错过,麻烦各位读者点一颗小心心再走吧。(鞠躬)

你可能感兴趣的:(考研408之计算机组成原理,c语言,开发语言)