#include <stdio.h>
#include <string.h>
int main()
{
char str0[30];
memset(str0,0/*'\0'*/,sizeof(str0));
//对内存空间做批量化的指定值的填充,不管操作对象是什么数据类型,它就是以字节为单位,进行填充
char str1[10];
memset(str1,0,10);//str1在这里是数组的首地址
memcpy(str0,"明天可以睡大觉了!",sizeof("明天可以睡大觉了!"));//对一片空间的值按字节方式一一拷贝,拷贝到str0
//注意区别sizeof与strlen的用途,前者关注的是内存空间。后者关注的是字符串的实际长度。
printf("请输入有待识别的值或字符串:");
gets(str1);//接收用户输入的一行字符串,不限长度,碰到空格不会停止接收(scanf会)
int iLen=strlen(str1)+1;//这里iLen得出的是空间占用情况<特殊的情况:sizeof()可以等价于strlen()+1的情况>
switch(iLen/5)//iLen/5在这里得出的是整型数(注意不要是小数呈其它非整型数)
{
case 0:
printf("%s <-这是一个小字符串。空间长度只有%d字节!\n",str1,iLen);
break;
case 1:
printf("%s <-这是一个较大字符串,空间长度为%d字节!空间快装不下了。有效剩余:%d字节。\n",str1,iLen,sizeof(str1)-iLen-1);
break;
default:
{
printf("%s%s <-这是一个重量级的字符串,空间长度为%d字节,空间被撑爆了。SOSOSOS!!!\n",str1,str0,iLen);
printf("\nStr0也受到了牵连!看看现在的Str0:");
//printf("%s",str0); str0被空间提前被放置\0,要输出本空间的内容,要用下面的语句:
int i=0;for(i=0;i<30;i++)printf("%c",str0[i]);
}
}
//strlen,printf,*scanf...函数的工作原理:只认字符串的首地址,然后以字符串的\0作为统计/输出的终止标志
//!专业体现在细节,思维严谨程度
}