scanf格式控制符

格式控制
1.
   %d     %o     %x      %c
   %s     %f     %e      无%u格式、%g格式
2.
   scanf("%3d%3d", &a, &b);
   输入:123456  //a=123,b=456
3.
   scanf("%2d%*3d%2d", &a, &b);
   输入:1234567 //a=12,跳过345,b=67。
4.
   scanf("%7.2f",&a); //不合法的,不能输入:12345.67使a的值为12345.67。
数据流分隔

1.类型分隔
    scanf("%d%c%f", &a, &b, &c);
    输入: 12r1234.567 //scanf接收数据时"r"不匹配,于是"12"转[换成]整型赋值给a a=12,b=‘r‘,c=1234.567

2.域宽分隔
    scanf("%2d%3f%4f", &a, &b, &c);
    输入:
    123456789012345 //a=12,b=345,c=6789

3.隐示分隔。
    空格、跳格符(‘\t‘)、换行符(‘\n‘)默认数据分隔符。

4.显示分隔符。
    scanf("a=%d,b=%f,c=%f", &a, &b, &c);
    输入数据应该为:
    a=1234,b=67.8,c=98.123
数据流中字符控制
    或者说是字符截止条件。
    是则读,否不读,但是剩余字符仍在流中,注意清理。

     const char* p = "12232114687ABC12356";
     sscanf(p, "%[123]", buf); // 把是‘1‘或‘2‘或‘3‘的字读读到buf中,buf="1223211",
     123无关顺序,等同于%[1-3]或%[3-1],【-】两端的 字符 为起始字符。

     %[3-14]      //%[3214]

     %[A-Za-z]    //只取字母

     %[^A-Za-z]   //取字母之外的所有字符

     "%[a-zA-Z]%[0-9]", buf1, buf2 //"aB12" buf1="aB",buf2="12"

     "%[^\n]"   //取一行字符,但是流中还会存在一个换行,fflush(stdin) or "%[^\n]%*c";

     "%*[^\n]%*c"  //就表示跳过一行

     "%-20[^\n]"   //就表示读取\n前20个字符。
 
时间: 2024-08-26 16:32:03

scanf格式控制符的相关文章

C程序设计(2)-格式控制符、标准输入输出函数

标识符(Identifier):以字母或下划线打头,由字母.数字和下划线构成,区分大小写. 格式控制符: 用在输入输出函数scanf( )和printf( )中的格式控制部分,即第一个逗号前的双引号内,用来对输出的数据(标识符或表达式)进行格式说明,包括数据类型.长度.对齐方式.小数位数等. 1.格式控制符的形式 %  [-]  [0]  [m/m.n]  [l/h] 格式控制符 其中[ ]里面的内容是可选的: -:表示左对齐,缺省情况下为右对齐(若没规定输出数据的宽度则为左对齐): 0:当规定

printf/scanf格式

(1)打印字符 char c; printf("%c",c); (2)打印整形 int i; printf("%d",i); //有符号十进制数 printf("%u",i); //无符号十进制数 (3)打印浮点数 float f; printf("%f",f); (4)打印指针 int *p; printf("%p",p); (5)打印八进制和十六进制 printf("%o",i);

文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

 1.在window下的命令重定向输出到文件中 2.将内容输入到某个文件中的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件中的名,然后将命令读取最后输出到文件中.命令<1.txt>2.txt   这一句的作用就是将执行的命令输入到2.txt中. 4.文件重定向案例1 #include <iostream> using namespace std; void main() { char str[30] = { 0 }; cin >> str;

Swift学习——格式控制符和元组流程控制(二)

Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中  例如学生表中的姓名,年龄,电话等 定义如下 var studentinfo = ("jhon",29,"123456") println(studentinfo.0) 访问的时候是通过下标来访问的. //元组本身是以一个整体存在的,如果用下标获取元祖的某一项的数据时 //可以通过点语法加下标的形式得到,这叫元祖的拆包 println("name:\(studentinfo.0)

格式控制符

一直以来对各项繁杂的格式控制符掌握的不是很好, 总是知道的大概, 用的时候都是感觉差不多是这个样子....今天终于吃到苦头 = = ............ CString strTerminalID; strTerminalID.Format(TEXT("%10u"),m_nTerminalID); exp.str(""); exp << "insert into T_B_CAR_REGISTER_INFO(id,TERMINAL_ID,PH

[C] scanf - 格式输入函数

scanf 函数称为格式输入函数,即把用户键盘输入的内容保存到指定的变量中. scanf 函数签名 scanf("格式控制字符串", 变量地址列表) scanf 函数是一个标准库函数,函数原型位于 <stdio.h> 中.与 printf 函数相同,C语言允许隐式使用 scanf 函数,即可以不提前包含 <stido.h> 头文件.如果隐式使用 scanf 或 printf 函数,编译时系统会发出隐式调用警告. scanf 不能在控制台回显非格式化占位符字符串,

c语言格式控制符

http://zhidao.baidu.com/link?url=-YJjz3U0fd_eSW9eLa8ankGo_QbyOOOaKYWyAY9g4mKWQj0DN6l12OSLJz24U8jCwo18MiBCzwpkFLoDM02yv_ printf的格式控制的完整格式:%     -     0     m.n     l或h     格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出.③0:有0表示指定空位填0,

关于printf中格式控制符

背景 今天,高中同学问了我关于C语言中输出指针存储的地址的问题,借这个机会复习了一下格式控制符,还了解到一些神奇的东西 格式控制符 完整格式 1.% - x m . n 格式字符 2.有-表示左对齐,无表示右对齐 3.x表示空位需要填的字符 4.m表示最小域宽 5.n表示精度,一般用于实型小数点保留位数,按照四舍五入原则 格式字符 整型 %d格式,表示整型 %hd格式,表示短整型 %ld格式,表示长整型 %lld/l64d格式,表示64位整型 %u格式,表示无符号整型,其他长度同d格式 %o格式

c++ 流格式控制符

参考自https://blog.csdn.net/thisispan/article/details/7450411 1. setw(n) 设置输出宽度为n个空格那么大:如果n大于后面输出的内容宽度,则默认右对齐:如果n小于后面输出内容的宽度,则相当于没有加setw(n) 作用域:一次输出,即下一个<<后面的内容. 2. setprecision(n) 设置浮点数的输出精度,即输出浮点数的有效数字为n,包括小数点前后所有数字.如果数字的有效数字本来大于n,就会自动做四舍五入:如果数字的有效数字