
c语言中char
工匠精神人物素材-联盟房产
2023年3月18日发(作者:二次供水)C语⾔字符型(char)及字符IO函数简介
⽬录
⼀、实验环境
Windows10系统
VisualStudioCommunity2019
⼆、简介C语⾔字符
1、字符常量
“字符常量”通过在单引号('')内包含单个字符来构成。例如:‘a’,‘1’,‘!’。字符可以是中的任何元素。
字符常量具有整数类型(integertype)。每个字符常量都被解释为其对应的ASCII码,如'a'在⼗进制和⼗六进制下分别为97和61。
常⽤的⼏个ASCII码:
字符值ASCII码(⼗进制下)
‘0’48
‘9’57
‘A’65
‘Z’90
‘a’97
‘z’122
2、字符变量
字符变量的类型说明符是char。每个字符变量占⽤⼀个字节的内存空间,存储字符常量的值(即ASCII码)。例如:
charch='a';//ch是字符变量,'a'是字符常量
char型和int型可以相互转换。当int型的变量转换成char型时,只取int型变量的低⼋位;当char型变量转换成int型时,以符号位的值补⾜
成int型。
三、字符输⼊输出函数
1、使⽤scanf()和printf()
强⼤的格式化输⼊输出函数,可以⽤于字符的输⼊和输出。需要加⼊头⽂件#include。
#define_CRT_SECURE_NO_WARNINGS//VS⾥不加这个会对scanf报错,说scanf涉及安全问题,我没有细看了
#include
intmain(void)
{
charch;
scanf("%c",&ch);//⽤%c
printf("ch='%c'",ch);//⽤%c
return0;
}
输出:
a//输⼊的字符
ch='a'
2、使⽤getchar()和putchar()
作为知识补充,⾸先我们来看这样⼀个问题:
C陷阱与缺陷139页:
函数调⽤需要花费较长的程序执⾏时间,因此getchar经常被实现为宏。这个宏在stdio.h中定义,因此如果⼀个程序没有包含stdio头
⽂件,编译器对getchar的定义⼀⽆所知。在这种情况下,编译器会假定getchar是⼀个返回类型为整型的函数。
实际上,很多C语⾔实现在库⽂件中都包括有getchar函数,忘记在程序中包含stdio头⽂件的效果就是在所有出现getchar宏的地⽅都
⽤getchar函数调⽤来替换getchar宏。
总之我们需要知到:
1、getchar()和putchar()⽐scanf()和printf()函数实现简单,效率更⾼;
2、为了额外的效率提升,通常getchar()和putchar()都是作为宏来实现的。
当我们使⽤getchar()和putchar()的时候,通常需要包含头⽂件#include。在stdio.h中有如下声明:
_Check_return__ACRTIMPint__cdeclgetchar(void);
_Check_return_opt__ACRTIMPint__cdeclputchar(_In_int_Character);
虽然看不懂,但还是能理解意思的,意思⼤概就是:
intgetchar(void);
intputchar(int_Character);
1、getchar()
功能:从输⼊缓冲区读取⼀个字符,输⼊有回显。不需要提供参数,返回值是读取字符的ASCII码。
2、putchar()
功能:输出指定字符。需要提供⼀个参数,返回值是接收参数的ASCII码。
注意到这⾥putchar()接收参数的类型是int,⽽不是char,为什么呢?getchar()和putchar()返回值类型为什么是int⽽不是char呢?⽹上
有说是为了兼容⽂件结束符EOF,有说是为了兼容ASCII码以外的字符,我就知到这么多了。