www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化
[導(dǎo)讀]函數(shù)名:fgets 功能:從流中讀取一個字符串 用法:char *fgets(char *string,int n,FILE *stream); 形參注釋: *string:結(jié)果數(shù)據(jù)的首地址;n-1:一次讀入數(shù)據(jù)塊的長度,其默認(rèn)值為1k,即1024;stream文件指針,指向一

函數(shù)名:fgets

功能:從流中讀取一個字符串

用法:char *fgets(char *string,int n,FILE *stream);

形參注釋:

*string:結(jié)果數(shù)據(jù)的首地址;n-1:一次讀入數(shù)據(jù)塊的長度,其默認(rèn)值為1k,即1024;stream文件指針,指向一個文件

函數(shù)說明:

fgets()用來從參數(shù)stream所指的文件內(nèi)讀入字符并存到參數(shù)s所指的內(nèi)存空間,直到出現(xiàn)換行字符、讀到文件尾或是已讀了size-1個字符為止,最后會加上NULL作為字符串結(jié)束。

如果在未讀滿n-1個字符之時,已讀到一個換行符或一個EOF(文件結(jié)束標(biāo)志),則結(jié)束本次讀操作,讀入的字符串中最后包含讀到的換行符。

示例:

#include <string.h>

#include <stdio.h>

int main(void)

{

FILE *stream; //FILE 是一種數(shù)據(jù)類型,是管理文件流的一種結(jié)構(gòu)

char string[] = "This is a test";

char msg[20];

/* open a file for update */

stream = fopen("DUMMY.FIL", "w+");

/* write a string into the file */

fwrite(string, strlen(string), 1, stream);

/* seek to the start of the file */

fseek(stream, 0, SEEK_SET);

/* read a string from the file */

fgets(msg, strlen(string)+1, stream);

/* display the string */

printf("%s", msg);

fclose(stream);

return 0;

}

代碼分析:

操作成功時返回的是msg的值,如果碰到文件結(jié)束或錯誤的時候,fgets返回NULL;因為輸入的過程中一般只會按下回車,很少會是EOF的,所以不會是碰到文件結(jié)束,而錯誤是當(dāng)你傳入msg是NULL的時候才會遇到,所以基本上是不可能返回NULL的。而且輸入超過了長度n的時候,fgets會自動截斷的,屬于操作成功。

函數(shù)名:gets

功能:從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結(jié)果存放在str指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為null值,并由此來結(jié)束字符串。

示例:

#include"stdio.h"

void main()

{

char str1[5];

gets(str1);

printf("%sn",str1);

}

注意:本函數(shù)可以無限讀取,不會判斷上限,所以程序員應(yīng)該確保str的空間足夠大,以便在執(zhí)行讀操作時不發(fā)生溢出。

代碼分析:

用gets函數(shù)時,編譯器會有報警提示,因為gets函數(shù)不安全,沒有限制輸入緩沖區(qū)的大小,容易造成溢出。這就好像養(yǎng)金魚,你投多少魚食它就吃多少,自己不知道控制,但它的胃容量是有上限的(默認(rèn)值),喂的太多金魚就會撐死(溢出)。

總結(jié):

1 盡量不使用gets

2 內(nèi)存越界是有問題隱患,但并不是一定會體現(xiàn)出問題,要看具體情況。



來源:miaomi2次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

為了提升設(shè)計效率和運(yùn)行安全性 ,對DL/T 834—2023《火力發(fā)電廠汽輪機(jī)防進(jìn)水和冷蒸汽導(dǎo)則》與DL/T 834—2003 《火力發(fā)電廠汽輪機(jī)防進(jìn)水和冷蒸汽導(dǎo)則》的設(shè)計、運(yùn)行和檢驗及維護(hù)要求進(jìn)行了對比分析 , 總...

關(guān)鍵字: 標(biāo)準(zhǔn) 疏水 冷蒸汽 發(fā)電廠

在Linux環(huán)境下的C語言編程中,函數(shù)的可重入性(Reentrancy)是一個至關(guān)重要的概念。它直接關(guān)系到多線程或多任務(wù)環(huán)境下程序的穩(wěn)定性和可靠性。所謂可重入函數(shù),是指一個函數(shù)可以被多個線程或任務(wù)安全地調(diào)用,而不會導(dǎo)致數(shù)...

關(guān)鍵字: Linux 庫函數(shù)

電磁兼容(EMC)是指在同一電磁環(huán)境中,不同設(shè)備或系統(tǒng)能夠正常工作且互不干擾的狀態(tài)。在現(xiàn)代電子和通信領(lǐng)域,EMC是一個至關(guān)重要的概念,它不僅影響設(shè)備的性能,還關(guān)系到整個系統(tǒng)的穩(wěn)定性和安全性。為了確保設(shè)備的EMC,各國都制...

關(guān)鍵字: 電磁兼容 EMC 標(biāo)準(zhǔn)

無線充電技術(shù),作為現(xiàn)代科技領(lǐng)域的一項創(chuàng)新,正逐步改變著我們的生活方式。從智能手機(jī)到電動汽車,無線充電的應(yīng)用場景日益廣泛,為用戶提供了前所未有的便捷性。然而,盡管無線充電技術(shù)發(fā)展迅速,其在標(biāo)準(zhǔn)和能效方面仍面臨諸多瓶頸,這些...

關(guān)鍵字: 無線充電 能效 標(biāo)準(zhǔn)

隨著無人機(jī)的普及,越來越多的人開始使用無人機(jī)進(jìn)行各種飛行任務(wù),但是不當(dāng)?shù)氖褂脮o公共安全和社會秩序帶來潛在的風(fēng)險,因此對于無人機(jī)使用的規(guī)定也變得越來越嚴(yán)格。本文將介紹無人機(jī)使用的標(biāo)準(zhǔn)和規(guī)定,以幫助大家正確使用無人機(jī)。

關(guān)鍵字: 無人機(jī) 標(biāo)準(zhǔn) UAV

智能家居作為新興領(lǐng)域,逐漸走入了人們的生活。智能家居系統(tǒng)是利用先進(jìn)的計算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)、智能云端控制、綜合布線技術(shù)、醫(yī)療電子技術(shù)依照人體工程學(xué)原理,融合個性需求,將與家居生活有關(guān)的各個子系統(tǒng)如安防、燈光控制、窗簾控...

關(guān)鍵字: 智能家居 標(biāo)準(zhǔn)

因為5G涵蓋內(nèi)容更豐富,上述三個5G專利池側(cè)重點(diǎn)也不同:Avanci側(cè)重汽車和物聯(lián)網(wǎng);Sisvel側(cè)重手機(jī)等終端領(lǐng)域;Alium側(cè)重?zé)o線接入網(wǎng)RAN。

關(guān)鍵字: 5G 標(biāo)準(zhǔn) 必要專利

為了保證航天型號元器件的固有質(zhì)量和使用質(zhì)量滿足航天工程的要求,需要制定一系列標(biāo)準(zhǔn)和文件,規(guī)范元器件的選擇、采購和應(yīng)用。這一系列標(biāo)準(zhǔn)和文件按照其內(nèi)在聯(lián)系形成的科學(xué)有機(jī)整體就是元器件標(biāo)準(zhǔn)體系。

關(guān)鍵字: 電子 標(biāo)準(zhǔn)

ISO26262是汽車的一個安全性國際標(biāo)準(zhǔn)。目前我國也在積極參與中。是行業(yè)標(biāo)準(zhǔn)的一種。

關(guān)鍵字: iso26262 標(biāo)準(zhǔn)

這篇文章想分享筆者在嵌入式開發(fā)過程中常用的庫函數(shù),他們的使用方法,使用場景,使用好處以及頭文件位置。1#include一般我在寫C代碼的時候都會包含此頭文件,因為一旦包含此文件后,你就可以暢快的使用bool數(shù)據(jù)類型,而不...

關(guān)鍵字: 庫函數(shù)
關(guān)閉