C语言字符串的定义
字符串是一个或多个字符的序列。
"rumenz.com"
双引号不是字符串的一部分, 双引号仅告知编译器它括起来的是字符串,正如单引号用户标识单个字符。
C语言字符串和字符的关系
C语言没有专门的字符串类型。字符串被储存在字符数组中。字符数组末尾是\0 ,这是空字符串,C语言用来标识字符串结束。
C语言中字符串一定以空字符结束(\0)
一个10个长度单位的字符数组,只能存储9个字符,最后一位存放\0,表示字符串的结束。
字符串长度,sizeof不计算\0 【C99 , C11添加了sizeof运算符】
sizeof运算符的括号可有可无。类型需要添加括号sizeof(char)。常量可以不用加sizeof 123。
C语言定义常量的2种方式使用 #define预处理器
使用const关键字 (C90添加)
C语言格式化输出类型
%a 浮点数、十六进制数字和p-记数法(c99
%A 浮点数、十六进制数字和p-记法(c99)
%c 一个字符(char)
%C 一个ISO宽字符
%d 有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。)
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 单精度浮点数(默认float)、十进制记数法(%.nf 这里n表示精确到小数位后n位.十进制计数)
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 对应字符串char*(%s = %hs = %hS 输出 窄字符)
%S 对应宽字符串WCAHR*(%ws = %S 输出宽字符串)
%u 无符号十进制整数(unsigned int)
%x 使用十六进制数字0xf的无符号十六进制整数
%X 使用十六进制数字0xf的无符号十六进制整数
%% 打印一个百分号
%I64d 用于INT64 或者 long long
%I64u 用于UINT64 或者 unsigned long long
%I64x 用于64位16进制数据
C语言%0m.nd / .n小数部分发生截取
#include
int main(void){
printf("%x %X %#x\n", 31, 31, 31);
printf("**%d**% d**% d**\n", 42, 42, -42);
printf("**%5d**%5.3d**%05d**%05.3d**\n", 6, 6, 6, 6);
return 0;
}
C语言printf scanf打印,输入float,double的区别printf输出float和double都可以用%f,double还可以用%lf。
scanf输入float用%f,double输入用%lf,不能混用。
printf中使用的%f,%e,%E,%g,%G格式,在scanf中统一成float
short int的大小是2字节
数字0~32767代表本身,而数字32767~65535则表示负数。其中65535表示-1,65534表示-2,以此类推。
printf的返回值表示打印了多少个字符。
C语言scanf
scanf使用空白符(换行,制表,空格)把输入分割成多个字段。
scanf会忽略空白符,当遇到空白符是会停止。当使用 %c除外
scanf()检测到文件末尾时会返回EOF(-1)
C语言scanf("%c",&ch)和scanf(" %c",&ch)的区别
scanf("%c",&ch)从输入的第1个字符开始读取
scanf(" %c",&ch)从第1个非空白字符开始读取
scanf成功读取一个值时会返回1,读取失败会返回0,读到文件文件末尾时,返回EOF(-1)
C语言跳过一个非空白字符或者数字
while(scanf("%d",&num)==1)
;