c语言---输入输出函数 printf scanf 及输入输出控制符
printf
# include <stdio.h> int printf(const char *format, ...); int printf("輸出控制符 非輸出控制符",輸出參數);printf:自右向左壓棧,故從右往左運算
后綴++會在數據入棧后生效,而不是要等到整條語句完全執行結束后才生效
實例1:
實例2:
int a=5,b=2;printf("%d %d\n",b=a+1,a=a+1); //結果為7 6 而不是6 6 證明了printf是從右向左入棧 int i=7; printf("%d\n", i++ * i++); //輸出結果是:49而不是56int i=7;printf("%d %d %d\n",++i,i,i++); //輸出結果是:9 9 7 后綴++的效果會在右側數據入棧后生效printf中的輸出控制符
%[標志][最小寬度][.精度][類型長度]類型
左右對齊: 1、%d 左對齊 2、%10d 右對齊并占用10格 最小數字寬度為10,如果要打印的位數小于10,左邊補足空格;如果要打印的位數大于10,則打印所有的數字,不會截斷。 3、%-10d左對齊并占用10格 最小數字寬度為10,如果要打印的位數小于10,則在后面補足空格;如果要打印的位數大于10,則打印所有的數字,不會截斷。%p 打印地址, 指針優先使用%p 其次才是%x %d 按十進制整型數據的實際長度輸出。 %ld 輸出長整型數據。 %md m 為指定的輸出字段的寬度。如果數據的位數小于 m,則左端補以空格,若大于 m,則按實際位數輸出。 %u 輸出無符號整型(unsigned)。輸出無符號整型時也可以用 %d,這時是將無符號轉換成有符號數,然后輸出。但編程的時候最好不要這么寫,因為這樣要進行一次轉換,使 CPU 多做一次無用功。 %c 一個字符。 %f 用來輸出實數,包括單精度和雙精度,以小數形式輸出。不指定字段寬度,由系統自動指定,整數部分全部輸出,小數部分輸出 6 位,超過 6 位的四舍五入。 %.mf 輸出實數時小數點后保留 m 位,注意 m 前面有個點。 %o 以八進制整數形式輸出 %s 輸出字符串。用 %s 輸出字符串同前面直接輸出字符串是一樣的。但是此時要先定義字符數組或字符指針存儲或指向字符串,這個稍后再講。 %x(或 %X 或 %#x 或 %#X) 以十六進制形式輸出整數,這個很重要。printf("%x\n", i); 2fprintf("%X\n", i); 2Fprintf("%#x\n", i); 0x2fprintf("%#X\n", i); 0X2Fscanf("%x\n",i); (以16進制形式)可以直接接受0x12 等價于12特定內容的輸出: printf("%%d\n"); 👉%d printf("\\\n"); 👉\ printf("\"\"\n") 👉""scanf
int scanf(格式控制,變量地址);
1、若格式控制內有特定字符,則輸入時也應相應輸入
例如scanf( “%d,%d”, &a, &b); 則應輸入3,4
2、需要的是變量地址&a 而不是變量名a(要存放到指定地址中去)
scanf( “%d%c%f”, &a, &b, &c);
3、%c接收時會將 空格字符和轉義字符當做有效字符輸入
scanf( “%c%c%c”, &c1, &c2, &c3);
如輸入:a b c 。字符 ‘a’ 賦給c1,字符(空格)’ ’ 賦給c2,字符 ‘b’ 賦給c3。
4、[]的使用:①只讀取[]中的字符,一旦發現不符合的字符則終止,后面的不要了
②[]內順序無所謂且可用“-”👉👉[123]≈[321]≈[1-3]≈[3-1] 若只要字母可用[A-Za-z]
③[]內只能是字符,不能是數字👉[3-14]約等于[3214]
例如:const char* p = “12232114687ABC12356”;
scanf( “%[123]”, buf); // 于是執行后buf應該是"1223211";
5、[]中的^表示“不要”👉 比如%[^A-Za-z]的意思就是取字母之外的所有字符。
6、%s遇到空白字符(空格、制表符、\r、\n)就結束了
故若要取一行字符,可以用 %[^\n]%*c(此時接收的字符串包含空格、制表符、回車\r,而%c抵消換行\n)
7、%[^\n]%*c就表示跳過一行
8、%-20[^\n]就表示讀取\n前20個字符。
scanf中的格式控制符
% * m l(long int)/無(int)/h(short int) 格式字符:u(unsigned) d(十進制) o(八進制) x(十六進制) f(float) lf(double) e(指數float)/le(指數double) g(小數float)/lg(小數double)s(字符串)c(char)2、域寬:指定輸入數據所占列寬,系統自動按它截取所需數據。如:scanf( "%3d%3d", &a, &b);輸入:123456系統自動將123賦給a,456賦給b。scanf( "%d%c%f", &a, &b, &c);如果輸入如下信息:1234r1234.567則把“1234”轉換成整型賦值給a,把“r”賦給變量b,最后把“1234.567”轉換成實型數據賦給c。 3、%后的“*” 附加說明符,用來表示跳過它相應的數據(接收但扔掉)。例如:scanf( "%2d%*3d%2d", &a, &b);如果輸入如下信息:1234567。將“12 ”賦給a,“67 ”賦給b。第二個數據“345”被跳過不賦給任何變量。 4、輸入數據時不能規定精度,例如:scanf( "%7.2f", &a);是不合法的,不能企圖輸入:12345.67而使a的值為12345.67。總結
以上是生活随笔為你收集整理的c语言---输入输出函数 printf scanf 及输入输出控制符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: skia 之canvas
- 下一篇: proteus8如何画封装_如何prot