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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)

發(fā)布時間:2025/3/20 编程问答 14 豆豆
C 標準庫 - <stdio.h>

文章目錄

    • 描述
    • 聲明
    • 參數(shù)
    • 返回值
    • 實例1
    • 實例2
    • 實例3
      • 注意(分隔符:space、Tab、Enter)
      • 換行格式化輸入示例(暫時只能弄英文字符,中文字符弄不了)

描述

C 庫函數(shù) int fscanf(FILE *stream, const char *format, …) 從流 stream 讀取格式化輸入。

聲明

下面是 fscanf() 函數(shù)的聲明。

int fscanf(FILE *stream, const char *format, ...)

參數(shù)

  • stream – 這是指向 FILE 對象的指針,該 FILE 對象標識了流。
  • format – 這是 C 字符串,包含了以下各項中的一個或多個:空格字符、非空格字符 和 format 說明符。
    format 說明符形式為 [=%[*][width][modifiers]type=],具體講解如下:

    fscanf 類型說明符:
  • 附加參數(shù) – 根據(jù)不同的 format 字符串,函數(shù)可能需要一系列的附加參數(shù),每個參數(shù)包含了一個要被插入的值,替換了 format 參數(shù)中指定的每個 % 標簽。參數(shù)的個數(shù)應與 % 標簽的個數(shù)相同。

返回值

如果成功,該函數(shù)返回成功匹配和賦值的個數(shù)。如果到達文件末尾或發(fā)生讀錯誤,則返回 EOF。

實例1

下面的實例演示了 fscanf() 函數(shù)的用法。

#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+"); //創(chuàng)建一個可用于讀寫的空文件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編譯運行結(jié)果:

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+"); //創(chuàng)建一個可用于讀寫的空文件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編譯運行結(jié)果:

Read String1 |Just| Read Integer |4| Read String3 |you|

參考文章:C 庫函數(shù) - fscanf()

實例3

注意(分隔符:space、Tab、Enter)

fscanf()和scanf()一樣,都是以白字符(<space>、<Tab>和<Enter>)作為分隔符的,就是說,當讀到白字符時,就結(jié)束當前數(shù)據(jù)的讀入,并將下一個數(shù)據(jù)賦給下一個變量。白字符不會當作數(shù)據(jù)的一部分賦給變量,而會被舍棄,但最后一個白字符會被保留在源數(shù)據(jù)流中。

換行格式化輸入示例(暫時只能弄英文字符,中文字符弄不了)

#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+"); //創(chuàng)建一個用于讀寫的空文件/*fputs("這是C語言。\n", fp);fputs("這是一種系統(tǒng)程序設計語言。\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編譯運行結(jié)果:

Read String1 |C| Read String3 |system| Read Integer |20220224|F:\Arnold_Test\20211223_jsonTest\jsonTest\Debug\jsonTest.exe (進程 50408)已退出,代碼為 0。 按任意鍵關閉此窗口. . .

總結(jié)

以上是生活随笔為你收集整理的C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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