C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)
生活随笔
收集整理的這篇文章主要介紹了
C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C 標準庫 - <stdio.h>
文章目錄
- 描述
- 聲明
- 參數
- 返回值
- 實例1
- 實例2
- 實例3
- 注意(分隔符:space、Tab、Enter)
- 換行格式化輸入示例(暫時只能弄英文字符,中文字符弄不了)
描述
C 庫函數 int fscanf(FILE *stream, const char *format, …) 從流 stream 讀取格式化輸入。
聲明
下面是 fscanf() 函數的聲明。
int fscanf(FILE *stream, const char *format, ...)參數
- stream – 這是指向 FILE 對象的指針,該 FILE 對象標識了流。
- format – 這是 C 字符串,包含了以下各項中的一個或多個:空格字符、非空格字符 和 format 說明符。
format 說明符形式為 [=%[*][width][modifiers]type=],具體講解如下:
fscanf 類型說明符:
- 附加參數 – 根據不同的 format 字符串,函數可能需要一系列的附加參數,每個參數包含了一個要被插入的值,替換了 format 參數中指定的每個 % 標簽。參數的個數應與 % 標簽的個數相同。
返回值
如果成功,該函數返回成功匹配和賦值的個數。如果到達文件末尾或發生讀錯誤,則返回 EOF。
實例1
下面的實例演示了 fscanf() 函數的用法。
#pragma warning(disable : 4996) #include <stdio.h> #include <stdlib.h>int main() {char str1[10], str2[10], str3[10];int year;FILE* fp;fp = fopen("file.txt", "w+"); //創建一個可用于讀寫的空文件fputs("We are in 2014", fp);rewind(fp); //回到文件fp開頭int ret = fscanf(fp, "%s %s %s %d", str1, str2, str3, &year); //ret為4printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read Integer |%d|\n", year);fclose(fp);return(0); }VS編譯運行結果:
Read String1 |We| Read String2 |are| Read String3 |in| Read Integer |2014|實例2
#pragma warning(disable : 4996) #include <stdio.h> #include <stdlib.h>int main() {char str1[10], str2[10];int num;FILE* fp;fp = fopen("file.txt", "w+"); //創建一個可用于讀寫的空文件fputs("Just 4 you", fp);rewind(fp); //回到文件fp開頭int ret = fscanf(fp, "%s %d %s", str1, &num, str2);printf("Read String1 |%s|\n", str1);printf("Read Integer |%d|\n", num);printf("Read String3 |%s|\n", str2);fclose(fp);return(0); }vs編譯運行結果:
Read String1 |Just| Read Integer |4| Read String3 |you|參考文章:C 庫函數 - fscanf()
實例3
注意(分隔符:space、Tab、Enter)
fscanf()和scanf()一樣,都是以白字符(<space>、<Tab>和<Enter>)作為分隔符的,就是說,當讀到白字符時,就結束當前數據的讀入,并將下一個數據賦給下一個變量。白字符不會當作數據的一部分賦給變量,而會被舍棄,但最后一個白字符會被保留在源數據流中。
換行格式化輸入示例(暫時只能弄英文字符,中文字符弄不了)
#pragma warning(disable : 4996) #include <stdio.h>int main() {FILE* fp;int num = 0; char parser1[1024] = { 0 };char parser2[1024] = { 0 };fp = fopen("file.txt", "w+"); //創建一個用于讀寫的空文件/*fputs("這是C語言。\n", fp);fputs("這是一種系統程序設計語言。\n", fp);fputs("今天是2022年2月24號!\n", fp);*/fputs("This is C language.\n", fp);fputs("This is a system design language.\n", fp);fputs("Today is 20220224.\n", fp);rewind(fp); //回到文件fp開頭int ret = 0;ret = fscanf(fp, "This is %s language.\n", &parser1);ret = fscanf(fp, "This is a %s design language.\n", &parser2);ret = fscanf(fp, "Today is %d.\n", &num);/* int ret = 0;ret = fscanf(fp, "這是%s言。\n", &parser1);ret = fscanf(fp, "這是%s語言。\n", &parser2);ret = fscanf(fp, "今天是%d年2月24號!", &num);*/printf("Read String1 |%s|\n", parser1); //Read String1 |C|printf("Read String3 |%s|\n", parser2); //Read String3 |system|printf("Read Integer |%d|\n", num); //Read Integer |20220224|fclose(fp);return(0); }VS編譯運行結果:
Read String1 |C| Read String3 |system| Read Integer |20220224|F:\Arnold_Test\20211223_jsonTest\jsonTest\Debug\jsonTest.exe (進程 50408)已退出,代碼為 0。 按任意鍵關閉此窗口. . .總結
以上是生活随笔為你收集整理的C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言rewind()函数(设置文件位置
- 下一篇: C语言fputs()函数(把字符串写入到