网站开发文献综述范文,小程序开发教程电子书,百度竞价广告推广,梦幻西游网页版app前言
scanf函数可以说是我们一开始就会接触的函数了#xff0c;但在最近复习时我又找到而来一些之前不甚了解或是块要遗忘的知识#xff0c;特作此篇。
一.返回值
我们之前提到了scanf返回值被忽略的问题#xff1a;
scanf函数返回值被忽略-CSDN博客
那么scanf的返回值…前言
scanf函数可以说是我们一开始就会接触的函数了但在最近复习时我又找到而来一些之前不甚了解或是块要遗忘的知识特作此篇。
一.返回值
我们之前提到了scanf返回值被忽略的问题
scanf函数返回值被忽略-CSDN博客
那么scanf的返回值到底是什么呢
这个是他的声明
这个则是返回值的描述 翻译
scanf返回成功转换和分配的字段数返回值不包括已读取但未分配的字段。返回值为0表示没有分配任何字段。如果在第一次尝试读取字符时发生错误或者遇到文件结束字符或字符串结束字符返回值为EOF。
由此我们可以知道他返回的就是实际读取并成功赋值的变量数量举个例子
第一种情况
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main() {int a;char b;char* c[5];
printf(%d,scanf(%d %c %s, a, b, c));return 0;
} 可以看到返回值是3
第二种情况
没有读取任何项:
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main() {int a;
printf(%d,scanf(%d, a));return 0;
}
输入a%d占位符不会读取进去并且程序会立即终止所以返回值是1
第三种情况第一次尝试读取字符时发生错误或者遇到文件结束字符
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main() {int a;
printf(%d,scanf(%d, a));return 0;
} 我们只需要连着按三次ctrlz即可至于为什么是三次这是vs的一个小问题搬来正常情况是按一次就行的。EOF是个宏定义它就是-1
二占位符
ok解决了返回值的问题之后我们再来看看占位符
先来几个基本的
1.%d 对应整形 %c对应字符 %s对应字符串 %f单精度浮点数 %lf双精度浮点数
然后是与之相关的
2.%hd 对应十进制的short int %ho对应八进制的short int %hx对应十六进制的short int
%hu 对应unsigned short int
3.%ld 十进制long int %lo 八进制long int %lx 十六进制long int %lu unsigned long int
4.%lld十进制的long long int %llo八进制的long long int %llx 十六进制的long long int
%llu long long unsigned int
5.%o 八进制int %x十六进制int %zd size_t
然后是少见的
%g6个有效数字的浮点数整数部分超过刘伟后就会自定转化为科学计数法且指数部分为小写e
%G与%g相同但指数部分为大写G。
%e使用科学计数法的附带念书指数部分e小写
%E与%e一样但指数部分E大写。
%le 科学计数法表示的long double
ok接下来才是今天的主角%*与%[].
1.%*
他是一个赋值忽略符该占位符不会将解析而后的值放入对应变量中而是直接丢弃
举例
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main() {int a;
scanf(%*d%d, a);
printf(%d, a);return 0;
} 可以发现我们先输入的3不见了而后输入的2则被用于给a赋值
2.%[]
[]内指定一组字符遇到不在集合中的字符时读取结束这里就要引入“^”了在这里^表示”非“
举例
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
int main() {char a[10];
scanf(%[^\n], a);
printf(%s, a);return 0;
} 可以发现此次读取是到回车才停下来的[^\n]表示的也正是非回车基于此我们可以更为便捷的调用scanf函数。
ok今天关于scanf函数的分享就到这里了觉得有用的话就点个免费的赞支持一下吧。