日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sscanf用法

發(fā)布時間:2024/4/24 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sscanf用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

fread?:以字節(jié)位計算長度,按照指定的長度和次數(shù)讀取數(shù)據(jù),遇到結(jié)尾或完成指定長度讀取后停止.
fscanf?:格式化讀取,按照指定的格式串進行讀取數(shù)據(jù),并將數(shù)據(jù)初始化為指定的格式.所以在文本方式下才能有效的判斷數(shù)據(jù)內(nèi)容.
fgets?:整行讀取,遇到回車換行或結(jié)尾停止.在文本方式時使用.

其實文本和二進制的差別就在于讀取的數(shù)據(jù),文本方式會默認(rèn)為是ASCII碼,二進制方式則原樣將數(shù)據(jù)讀出.所以文本時候的格式控制如回車,制表符等,

二進制的時候是不能有效的自動判斷的。?

scanf 從控制臺輸入?

fscanf 從文件輸入?
sscanf 從指定字符串輸入

1、例:使用scanf函數(shù)輸入數(shù)據(jù)。

#include<stdio.h> int main() { int a,b,c; printf("輸入 a, b, c\n"); scanf("%d,%d,%d", &a, &b, &c); printf("a = %d b = %d c = %d\n", a, b, c); return 0; } 2、int fscanf(文件指針,格式字符串,輸入列表); 功 能: 從一個流中執(zhí)行格式化輸入,fscanf遇到空格和換行時結(jié)束,注意空格時也結(jié)束。這與fgets有區(qū)別,fgets遇到空格不結(jié)束。 用 法: int fscanf(FILE *stream, char *format,[argument...]); 如: FILE *fp; char a[10]; int b; double c; fscanf(fp,"%s%d%lf",a,&b,&c) 返回值:整型,成功讀入的參數(shù)的個數(shù)

3、大家都知道sscanf是一個很好用的函數(shù),利用它可以從字符串中取出整數(shù)、浮點數(shù)和字符串等等。它的使用方法簡單,特別對于整數(shù)和浮點數(shù)來說。但新手可能并不知道處理字符串時的一些高級用法,這里做個簡要說明吧。

1. 常見用法。
char str[512] = {0};
sscanf("123456 ", "%s", str);
printf("str=%s\n", str);

2. 取指定長度的字符串。如在下例中,取最大長度為4字節(jié)的字符串。
sscanf("123456 ", "%4s", str);
printf("str=%s\n", str);//str的值為1234

3. 取到指定字符為止的字符串。如在下例中,取遇到空格為止字符串。
sscanf("123456 abcdedf", "%[^ ]", str);//注意^后面有一空格
printf("str=%s\n", str);

4. 取僅包含指定字符集的字符串。如在下例中,取僅包含1到9和小寫字母的字符串。
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", str);
printf("str=%s\n", str);

5. 取到指定字符集為止的字符串。如在下例中,取遇到大寫字母為止的字符串。
sscanf("123456abcdedfBCDEF", "%[^A-Z]", str);
printf("str=%s\n", str);

源代碼一如下:

[html]?view plaincopy
  • #include?<stdio.h>??
  • #include?<stdlib.h>??
  • ??
  • char?*tokenstring?=?"12:34:56-7890";??
  • char?a1[3],?a2[3],?a3[3];??
  • int?i1,?i2;??
  • ??
  • void?main(void)??
  • {??
  • ???sscanf(tokenstring,?"%2s:%2s:%2s-%2d%2d",?a1,?a2,?a3,?&i1,?&i2);??
  • ???printf("%s\n%s\n%s\n%d\n%d\n\n",?a1,?a2,?a3,?i1,?i2);??
  • ???getch();??
  • }???

  • 源代碼二如下:

    [html]?view plaincopy
  • #include?<stdio.h>??
  • #include?<stdlib.h>??
  • ??
  • char?*tokenstring?=?"12:34:56-7890";??
  • char?a1[3],?a2[3],?a3[3],a;??
  • int?i1,?i2;??
  • ??
  • void?main(void)??
  • {??
  • ???sscanf(tokenstring,?"%2s%1s%2s%1s%2s%1s%2d%2d",?a1,?&a,?a2,?&a3,?a3,?&a,?&i1,?&i2);??
  • ???printf("%s\n%s\n%s\n%d\n%d\n\n",?a1,?a2,?a3,?i1,?i2);??
  • ???getch();??
  • }???
  • 結(jié)果同上


    源代碼三如下:

    [html]?view plaincopy
  • #include?<stdio.h>??
  • #include?<stdlib.h>??
  • ??
  • char?*tokenstring?=?"12:34:56-7890";??
  • char?a1[3],?a2[3],?a3[3],?a4[3],?a5[3];??
  • int?i1,?i2;??
  • ??
  • void?main(void)??
  • {??
  • ???char?a;??
  • ???sscanf(tokenstring,?"%2s%1s%2s%1s%2s%1s%2s%2s",?a1,?&a,?a2,?&a3,?a3,?&a,?a4,?a5);??
  • ???i1?=atoi(a4);??
  • ???i2?=atoi(a5);??
  • ??
  • ???printf("%s\n%s\n%s\n%d\n%d\n\n",?a1,?a2,?a3,?i1,?i2);??
  • ???getch();??
  • }??
  • 結(jié)果同上


    方法四如下(以實例說明,原理相同):

    [html]?view plaincopy
  • /*?The?following?sample?illustrates?the?use?of?brackets?and?the??
  • ???caret?(^)?with?sscanf().??
  • ???Compile?options?needed:?none??
  • */??
  • ??
  • #include?<math.h>??
  • #include?<stdio.h>??
  • #include?<stdlib.h>??
  • ??
  • char?*tokenstring?=?"first,25.5,second,15";??
  • int?result,?i;??
  • double?fp;??
  • char?o[10],?f[10],?s[10],?t[10];??
  • ??
  • void?main()??
  • {??
  • ???result?=?sscanf(tokenstring,?"%[^','],%[^','],%[^','],%s",?o,?s,?t,?f);??
  • ???fp?=?atof(s);??
  • ???i?=?atoi(f);??
  • ???printf("%s\n?%lf\n?%s\n?%d\n",?o,?fp,?t,?i);??
  • }??
  • 總結(jié)

    以上是生活随笔為你收集整理的sscanf用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。