几天没上,居然有粉丝了??!!妈耶,真的是受宠若惊啊啊。短短两三天,就有两个粉丝了,那么按一天一个的速度来看,一个月30个…半年90个…一年就是365个……..哈哈哈~~~~……
呃…嗯嗯…咳咳,跑偏了,回归正题哈。
先再前面说一下,本人是新手,所以很有可能推理的结果是错误的,如果有错,请在评论区留言,谢谢!尽管我的文章没多少人看,但,我也不希望让那些人看到的答案是错误的,害人啊!所以我把我的推理用方框框起来了,便于你们寻找错误。
嗯…这次想写的是C PRIMER PLUS第四章小结,这么说确实很局限,所以这里把本章题目写一下:字符串和格式化输入/输出,嗯…完美的把题目说了一遍,撑了不少字数。…嗯嗯,,那么,字符串和格式化输入/输出,是什么意思呢?
我简单说一下哈,字符串,就是一个或多个字符的序列。举个栗子,”我真帅”,其中里面的三个字就是字符串,好理解吧。所以,个人认为【printf输出的东西,其实大多数是字符串,像pfintf(“我真帅”),就是输出了字符串】,
好了,那后半句:格式化输入/输出是什么意思呢,【我认为,就是printf与scanf的一些格式。】
确实,听这么说确实很简单,但,书里实在讲的太细了,那我也在这里挑一些重要的东西写一下吧。
首先,是一个新函数strlen(),用途?目前只学到是用于strlen(name),那strlen是干啥的呢?
举个栗子
#include <stdio.h>
#include <string.h>
#define NAME "CHEN"
int main (void)
{
printf("%d",strlen(NAME));
getchar();
return 0;
}
输出结果是4,显而易见,strlen就是测字符串中字符的字节的(我不知道这样描述是否标准),那说到strlen(),就不得不提sizeof(),sizeof()是干啥的呢?同样来举个栗子
#include <stdio.h>
#include <string.h>
#define NAME "CHEN"
int main (void)
{
printf("%u,%u",strlen(NAME),sizeof(NAME));
getchar();
return 0;
}
输出结果是4,5
如果我们把CHEN改为QQQQQQ,那么输出结果就成了6,7。
这就见了鬼了,为什么sizeof总会比strlen多1呢?是因为C中的字符串一定以空字符结束
所以strlen输出是4而sizeof输出是5
那么,sizeof的作用就是测整个字符串所占字节的(我不知道这样描述是否准确)。
接下来说一下有关printf与scanf的修饰符与标记,个人感觉有点意思的是“数字”,“.数字”,“*”,“-”
其中,前三个是修饰符,最后是标记。
分别解释一下,数字是指%4d,.数字是指%.4d,-是指%-d。*有点特别,我们另外说。
先说前三个,
%4d的4就是控制字符长度的
举例,name=chen,那么输出时,如果是%3d,%4d,%2d,%d,输出结果是chen
若是%5d,则是 chen(注意前面有一个空格,加起来占5个位置)
%.4d是指精度,这个大家都见过吧,
举例A = 2.3333,%.2f输出是2.33
%.3f输出是2.333
%.5f输出是2.33330
同理,若a = 2333 %.5d输出是02333
%-d是指将数据顶头输出的
举例,name=chen 那么%5d就是”空格chen”,但如果是%-5d,那就是”chen空格”
关于*,printf于scanf的用法都不同
printf中,起控制格式的作用,听起来很抽象,我们举个栗子
#include<stdio.h>
int main (void)
{
int width,precision;
float weight;
printf("输入宽度与精度,用逗号隔开\n");
scanf("%d,%d",&width,&precision);
printf("\n输入体重\n");
scanf("%f",&weight);
printf("你的体重是%*.*f,输出的宽度与精确度都是你定的哦~",width,precision,weight);
getchar();
getchar();
getchar();
return 0;
}
嘛嘛,就是这样。
关于scanf中的*作用是让scanf()跳过相应的输出项,举个栗子
#include<stdio.h>
int main (void)
{
int a;
printf("输入三个数");
scanf("%*d,%*d,%d",&a);
printf("最后一个数是%d!对吧,哈哈我真厉害",a);
getchar();
getchar();
}
若输入时2,3,4,则输出是 最后一个数是4!对吧,哈哈我真厉害。
关于scanf的*,我个人有个小想法,就是让一个人输入他的名字,然后再缺字输出,造成一种娱乐效果,当再次输入名字是,又输出错误的名字,最后,输出正确的名字,做成一个小游戏,当然我也写出来了,以下是截图。
尴尬的是最后出BUG了,应该是老八仙,你的名字真好听,可惜了本想来个首尾呼应….
那么!这次的博客就到此结束啦,写了大概2,3个小时,好慢啊…啧啧,那下个博客我们再见吧,拜拜~(←醒醒吧又没有回头客看你的文章(鄙视脸))