10.18学习
1.c语言中格式说明符
%d 或 %i :十进制整数( int 类型)。
%u :无符号十进制整数( unsigned int 类型)。
%x 或 %X :十六进制整数(使用小写或大写字母)。
%o :八进制整数。
%c :字符( char 类型)。
%s :字符串( char 类型的数组或指针)。
%f :浮点数( float 或 double 类型),默认精度为6位小数。
%e 或 %E :科学计数法表示的浮点数(例如 1.2345e+02 )。
%g 或 %G :通用浮点数表示,根据数值的大小自动选择 %f 或 %e 。
%p :指针的值,通常以十六进制形式显示,并带有前缀 0x 。
%n :读取的字符数(用于 scanf 等函数)。
★长度修饰符
%h :短整型( short int )。
%l :长整型( long int )。
%ll 或 %I :长长整型( long long int ,C99标准)。
%j :有符号整数类型,至少可以存储 intmax_t 值(C99标准)。
%z :大小为 size_t 的整数(C99标准)。
%t :大小为 ptrdiff_t 的整数(C99标准)。
%L :长双精度浮点数( long double 类型)。
★精度修饰符
.<number> :指定浮点数的精度,即小数点后的位数。
标志
+ :总是显示正负号。
- :左对齐输出。
(空格):显示空格代替正号。
# :显示替代形式(例如,十六进制数的前缀 0x 或 0X ,八进制数的前缀 0 )。
0 :用零填充空白位置。
示例
printf("Integer: %d\n", 10);
printf("Unsigned: %u\n", 10);
printf("Hex: %x\n", 10);
printf("Octal: %o\n", 10);
printf("Character: %c\n", 'A');
printf("String: %s\n", "Hello");
printf("Float: %f\n", 3.14159);
printf("Exponential: %e\n", 3.14159);
printf("General: %g\n", 3.14159);
printf("Pointer: %p\n", &i);
printf("Long int: %ld\n", (long int)10);
printf("Long long int: %lld\n", (long long int)10);
printf("Precision: %.2f\n", 3.14159);
2.scanf的用法
int scanf(const char *format, ...);
format :一个格式字符串,指定了输入值的预期类型和顺序。
... :可变参数列表,表示要填充的变量的地址。
scanf 函数会根据格式字符串中的格式说明符来读取输入,并将其转换为相应的数据类型,然后存储在提供的变量中。
注意事项
①scanf 函数返回成功读取的输入项数量,如果遇到错误或到达文件末尾,则返回 EOF 。
②使用 scanf 时,应该总是检查返回值,以确保输入成功。
③scanf 不会跳过空白字符,如空格、制表符或换行符。如果需要跳过这些字符,可以在格式字符串中使用空格。
④scanf 不检查变量的大小,如果输入的数据超出变量的存储能力,可能会导致缓冲区溢出。
⑤对于字符串输入, scanf 会在遇到空白字符时停止读取,因此如果输入中包含空格,应该使用 fgets 函数代替。
由于 scanf 的这些限制,现代C编程中更推荐使用 fgets 和 sscanf 等函数来处理输入,因为它们提供了更好的控制和安全性。