生活随笔
收集整理的這篇文章主要介紹了
sscanf用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
fread?:以字節位計算長度,按照指定的長度和次數讀取數據,遇到結尾或完成指定長度讀取后停止.
fscanf?:格式化讀取,按照指定的格式串進行讀取數據,并將數據初始化為指定的格式.所以在文本方式下才能有效的判斷數據內容.
fgets?:整行讀取,遇到回車換行或結尾停止.在文本方式時使用.
其實文本和二進制的差別就在于讀取的數據,文本方式會默認為是ASCII碼,二進制方式則原樣將數據讀出.所以文本時候的格式控制如回車,制表符等,
二進制的時候是不能有效的自動判斷的。?
scanf 從控制臺輸入?
fscanf 從文件輸入?
sscanf 從指定字符串輸入
1、例:使用scanf函數輸入數據。
#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(文件指針,格式字符串,輸入列表);
功 能: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。
用 法: int fscanf(FILE *stream, char *format,[argument...]);
如:
FILE *fp;
char a[10];
int b;
double c;
fscanf(fp,"%s%d%lf",a,&b,&c)
返回值:整型,成功讀入的參數的個數
3、大家都知道sscanf是一個很好用的函數,利用它可以從字符串中取出整數、浮點數和字符串等等。它的使用方法簡單,特別對于整數和浮點數來說。但新手可能并不知道處理字符串時的一些高級用法,這里做個簡要說明吧。
1. 常見用法。
char str[512] = {0};
sscanf("123456 ", "%s", str);
printf("str=%s\n", str);
2. 取指定長度的字符串。如在下例中,取最大長度為4字節的字符串。
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();?? }???
結果同上
源代碼三如下:
[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();?? }??
結果同上
方法四如下(以實例說明,原理相同):
[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);?? }??
總結
以上是生活随笔為你收集整理的sscanf用法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。