这个笔记是平时在学习,开发的时候遇到的一些被遗忘的点做补充。
一:
printf("%*.*...",...);
这里我遗忘是因为以前遇到过这个:scanf("%*...",...);
这里的两个是不一样的,第一个里面的”*“是要通过后面的一个整形参数填充的,所以输出样式大概就是:
printf("%3.3...",...);
这个样子的,后面的那个*号代表跳过的意思,就比如scanf("%*s",...);
此时输入的字符串实际上是会被跳过的,所以对应后面的char *里面是没有被填充的,这里还有一个小应用scanf("%s%*c",...);
这里后面实际上只需要跟一个字符串缓冲区就好了(上面那个也一样可以这么做)这个就可以直接解决回车遗留在缓冲区的问题(”%s”遇到制表符(tab,空格,回车)的时候就会停止输入,此时停止的那个符号及后面的东西都会被遗留在缓冲区带下一个i函数读取,这里的%*c实际上就是等效于加了一个getchar()在后面)
二:
一个伪字符串格式输出的方法:
嗯灰常有趣的一个东西:
#include<stdio.h>
int main()
{
printf("%.*s",5, &"Hello World"[6];//printf("%.*s",5, &6["Hello World"]);
return 0;
}
其实有一点点基础的都可以很轻松的分析出来,先解引用然后再取址给%s输出,说白了就是*(POINT + int)一个模式的,哈哈
后面的注释是另一种表达方法,原理就是上面的那一个(出自《C专家编程》,好久没看了,是时候回去好好重新品品了,是本好书,假期会补上他的笔记的!)