詳解C說話sscanf()函數、vsscanf()函數、vscanf()函數。本站提示廣大學習愛好者:(詳解C說話sscanf()函數、vsscanf()函數、vscanf()函數)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C說話sscanf()函數、vsscanf()函數、vscanf()函數正文
C說話sscanf()函數:從字符串中讀取指定格局的數據
頭文件:
#include <stdio.h>
sscanf()函數用於從字符串中讀取指定格局的數據,其原型以下:
int sscanf (char *str, char * format [, argument, ...]);
【參數】參數str為要讀取數據的字符串;format為用戶指定的格局;argument為變量,用來保留讀取到的數據。
【前往值】勝利則前往參數數量,掉敗則前往-1,毛病緣由存於errno 中。
sscanf()會將參數str 的字符串依據參數format(格局化字符串)來轉換並格局化數據(格局化字符串請參考scanf()), 轉換後的成果存於對應的變量中。
sscanf()與scanf()相似,都是用於輸出的,只是scanf()以鍵盤(stdin)為輸出源,sscanf()以固定字符串為輸出源。
【實例】從指定的字符串中讀取整數和小寫字母。
#include <stdio.h> int main(void) { char str[100] ="123568qwerSDDAE"; char lowercase[100]; int num; sscanf(str,"%d %[a-z]", &num, lowercase); printf("The number is: %d.\n", num); printf("The lowercase is: %s.", lowercase); return 0; }
輸入成果:
The number is: 123568. The lowercase is: qwer.
可以看到format參數有些相似正則表達式(固然沒有正則表達式壯大,龐雜字符串建議應用正則表達式處置),支撐聚集操作,例如:
別的,format不只可以用空格界定字符串,還可以用其他字符界定,可以完成簡略的字符串朋分(加倍靈巧的字符串朋分請應用strtok())。例如:
sscanf("2006:03:18", "%d:%d:%d", a, b, c); sscanf("2006:03:18 - 2006:04:18", "%s - %s", sztime1, sztime2);
C說話vsscanf()函數:字符串輸出函數
頭文件:
#include <stdio.h>
界說函數:
int vsscanf(const char * str, const char * format, va_list ap);
函數解釋:vsscanf()會將參數str 的字符串依據參數format 字符串來轉換並格局化數據. 格局轉換情勢請參考附錄C 或vprintf()典范。
前往值:勝利則前往參數數量, 掉敗則前往-1, 毛病緣由存於errno 中.
C說話vscanf()函數:字符串格局化輸出函數
頭文件:
#include <stdio.h> #include <stdarg.h>
界說函數:
int vscanf(const char * format, va_list ap);
函數解釋:vscanf()會將輸出的數據依據參數format 字符串來轉換並格局化數據. 格局轉換情勢請參考scanf(). 轉換後的成果存於對應的參數內. va_list 用法請參考附錄C 或vprintf()典范.
前往值勝利則前往參數數量, 掉敗則前往-1, 毛病緣由存於errno 中。