C语言深度学习之字符串与格式输入/输出

C语言深度学习之字符串与格式输入/输出

char型数组和空字符

由于C语言中并没有专门用来储存字符串的数据类型,故用char类型数组来储存它们。并且每一个字符串最后都以空字符(null字符)结尾。字符串中的字符被储存在相邻的存储单元里边,每一个字符占一个存储单元。在这里插入图片描述
如图所示。而前面已经提到,空字符在ASCII码中等值于0,也要占一个存储单元。所以易得结论,一个存储字符串的char型数组,其实际能够存储的字符数比定义时限制的字节数少一

关于sizeof运算符的解释

sizeof在C语言中并不是函数,实际上它的原理是获取了数据在内存中所占用的存储空间,以字节为单位来计数。它能够判断一个数据类型或者数组所占用的存储空间。一般而言,char型占一个字节,short型占2个字节,而int型占四个字节。具体例子如下。

int a=10;
int arr=[1,2,3];
char str[]="hello";
char str2[45]="hello";
int len_a = sizeof(a);
int len_arr = sizeof(arr);
int len_str = sizeof(str);
int len_str2 = sizeof(str2);
printf("%d,%d,%d,%d\n",a,arr,str,len_a,len_arr,len_str,str2)

最终输出结果应依次为:4,12,6,45。注意:虽然str2数组看似没有存储满,实际上只是在所输入的字符串之后的空字符后为垃圾数据。而sizeof由于不像strlen函数一样能够通过判断空字符来结束计数,所以把垃圾数据也计算入内,故得到此结果。此外,sizeof是否用圆括号取决于所计数对象为类型还是具体对象。若为具体对象则不必添加圆括号,而如果为类型如int则必须加上。

scanf读取特性

在读取字符串时,根据%s转换说明,scanf只读取字符串中的第一个单词,一旦中间读到空格就会立即停止。

注意单引号和双引号

在这里插入图片描述

#define指令

#define指令不仅可以定义常数常量,还可以定义字符和字符串常量。

printf()修饰符

在这里插入图片描述

C语言中的除法运算和求余运算

  • 除法运算符"/",二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型结果为双精度实型
  • 求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。

scanf中%c的问题

在这里插入图片描述

scanf中"*"号应用

把"*“号放在”%"号和转换转换字符之间,会使得scanf跳过相应输出项。

printf中转换说明间的空格作用

在多个转换说明中插入空白字符,可以确保即使一个数字溢出了自己的字段,下一个数字也不会紧跟其后输入(避免两个数字看起来像一个数字),这是因为格式字符中的普通字符包括空格符也会被打印出来。

printf转换说明

在这里插入图片描述

printf使用足够大的字宽可以使得打印出来的内容美观大气

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值