從多個方面詳細闡述fgets()函數

一、fgets函數返回值

fgets()函數返回讀取到的字元串,包括換行符。如果成功讀取,則返回字元串的指針,如果未能讀取到內容,則返回NULL指針。如果讀取的字元串長度超過指定的緩衝區長度,則fgets()函數會將字元串截斷,但是依然返回截斷後的字元串。

char buffer[5];
fgets(buffer, 5, stdin); //如果輸入「hello world」,則輸出「hello」

上述代碼截取了輸入的字元串,只輸出了5個字元長度的內容。此時fgets()函數會自動截斷輸入,只返回「hello」。

二、fgets會讀取換行符嗎

默認情況下,fgets()函數讀取到換行符(\n)會停止讀取,但是也會將換行符包含在讀取的字元串中。如果未讀取到換行符,fgets()函數會一直等待輸入。

char buffer[1024];
fgets(buffer, 1024, stdin); //等待輸入

上述代碼會在等待用戶回車之前一直阻塞,直到用戶輸入了回車鍵,才會繼續向下執行。

三、fgets()的功能

fgets()函數是標準C語言庫中的一個輸入函數,它可以從指定的輸入流中讀取一行字元串。常用於讀取用戶從鍵盤輸入的內容,也可以從文件中讀取。函數原型如下:

char *fgets(char *str, int n, FILE *stream);

其中,str代表字元串存儲的首地址,n代表讀取的最大字元數(包括換行符),stream代表輸入流的文件指針,例如stdin代表鍵盤輸入流,stdout代表屏幕輸出流,而文件操作函數fopen()返回的文件指針就可以作為這裡的stream參數。

四、fgets的用法

fgets()函數的用法主要有兩種:

1、從文件中讀取

FILE *fp = fopen("example.txt", "r"); //以只讀方式打開example.txt文件
char buffer[1024];
while(fgets(buffer, 1024, fp)) {
    printf("%s", buffer); //輸出讀取到的字元串
}
fclose(fp); //關閉文件

上述代碼打開了一個名為example.txt的文件,按行讀取其中的內容,並輸出在屏幕上。

2、從鍵盤輸入讀取

#include <stdio.h>
int main() {
    char buffer[1024];
    printf("請輸入你的姓名:");
    fgets(buffer, 1024, stdin);
    printf("你好,%s", buffer);
    return 0;
}

上述代碼等待用戶從鍵盤輸入,並將輸入的內容賦值給變數buffer,然後輸出一個問候語。

五、fgets函數詳細用法

除了上述兩種常見用法,fgets()函數還有許多其他的用法:

1、fgets讀取多行字元串

#include <stdio.h>
int main() {
    char buffer[1024];
    printf("請輸入若干行文字,以回車結束:\n");
    while(fgets(buffer, 1024, stdin)) {
        printf("%s", buffer);
    }
    return 0;
}

上述代碼可以讀取用戶的多行輸入,並一行一行地輸出在屏幕上,直到用戶輸入Ctrl + D(在Linux和Mac上)或者Ctrl + Z(在Windows上)結束程序。

2、fgets結合sscanf實現字元串解析

#include <stdio.h>
int main() {
    char buffer[1024] = "Doe, John, 123 Main St., Anytown, USA";
    char name[20], street[30], town[20], country[20];
    int house_number;
    sscanf(buffer, "%[^,], %[^,], %d %[^,], %[^\n]", name, street, &house_number, town, country);
    printf("姓名:%s\n", name);
    printf("街道:%s,%d號\n", street, house_number);
    printf("城鎮:%s\n", town);
    printf("國家:%s\n", country);
    return 0;
}

上述代碼從一個字元串中解析出了姓名、街道、城鎮和國家等信息,並輸出在屏幕上。其中,%[^,]表示讀取除逗號以外的所有字元,%d表示讀取一個整數,%[^\n]表示讀取一行字元串。

六、fgets函數怎麼用

使用fgets()函數需要注意以下幾點:

1、為緩衝區分配足夠的空間,以確保讀取到完整的內容。

2、確保程序能控制讀取的字元數,以防止攻擊者注入惡意字元串。

3、從文件中讀取時,必須先判斷文件是否存在、可讀、是否已打開,並在讀取結束後關閉文件。

4、從鍵盤中讀取時,可以使用scanf()函數或getchar()函數替代fgets()函數,具體使用哪種函數可以根據應用場景進行選擇。

七、fgets函數選取3~5個與fgets()相關的做為小標題

1、fgets函數返回值

2、fgets會讀取換行符嗎

3、fgets()的功能

4、fgets的用法

5、fgets函數詳細用法

上述小標題涵蓋了fgets()函數的全部用法,而且每個小標題長度也基本控制在10漢字左右,方便讀者快速閱讀和理解。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187974.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 06:26
下一篇 2024-11-28 06:26

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 為什麼Python不能編譯?——從多個方面淺析原因和解決方法

    Python作為很多開發人員、數據科學家和計算機學習者的首選編程語言之一,受到了廣泛關注和應用。但與之伴隨的問題之一是Python不能編譯,這給基於編譯的開發和部署方式帶來不少麻煩…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python合併多個相同表頭文件

    對於需要合併多個相同表頭文件的情況,我們可以使用Python來實現快速的合併。 一、讀取CSV文件 使用Python中的csv庫讀取CSV文件。 import csv with o…

    編程 2025-04-29

發表回復

登錄後才能評論