此图方便大家分析问题,作为参考,读者可作为对照参考:
简单说一下scanf():
Scanf()函数每次读取一个字符,跳过所有的空白字符,直至遇到第1个非空白字符才开始读取,往往只读取字符串中的一个单词,遇到第一个空格、制表符、换行符时就不再读取。结合程序8,9行,相信读者能看明白。
#核心#:在这里想根据上面的图例解释一下strlen与sizeof具体的区别和用法:
Strlen(函数)作用:计算返回字符串长度,以\0结束(所以计算的时候不含\0),受存储内容影响;
Sizeof(运算符)作用:计算实际分配的内存空间,通常只能计算静态内存空间,不受存储内容影响;
在这里说明一下
int a[ ]="abc";
Sizeof(a)=4,因为"abc"自动会添加\0,因此为3+1
在某些情况下!在某些情况下!
简单理解为:strlen为实际存储空间,sizeof为最大存储空间。
下面有些典型的例题供大家练习理解:
Sizeof:
Char str1[]=”abcde“ sizeof(str1)=6
Char str2[10]=”abcdefg” zizeof(str2)=10
Char str3[20]={‘a’}; sizeof(str3)=20
思考题:
Char *str4=”abcde”
(1).Sizeof(str4)=4 (2).sizeof(*str4)=1
分析: (1)中计算的是 (char *str4)的存储空间,在C中以4个字节存储。
(2)中计算的是 str4首元素的值,是以1个字节存储。
Strlen:就是计算字符串,小编不做过多解释!
希望这简单的说明,能让初学者能够知道其具体用法。如发现问题 请在下面留言 谢谢!!