C语言随记(一)

来源:互联网 发布:mysql 连续签到天数 编辑:程序博客网 时间:2024/05/01 05:30

这个笔记是平时在学习,开发的时候遇到的一些被遗忘的点做补充。

一:

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专家编程》,好久没看了,是时候回去好好重新品品了,是本好书,假期会补上他的笔记的!)

原创粉丝点击