C语言的fgets 与 gets
分享一下我老師大神的人工智能教程!零基礎(chǔ),通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉(zhuǎn)載本篇文章。分享知識(shí),造福人民,實(shí)現(xiàn)我們中華民族偉大復(fù)興!
今天在翻《C語(yǔ)言參考手冊(cè)》查看文件操作的相關(guān)函數(shù)時(shí),看到fgets() 與 gets()的一些“微妙”的地方
另外《C語(yǔ)言參考手冊(cè)》是C程序員身邊的一本非常好的“詞典”,剛開(kāi)始學(xué)習(xí)C的時(shí)候,或許用不上這書(shū)(只因?yàn)槌鯇W(xué)者對(duì)里面的內(nèi)容看得不是很明白)但是覺(jué)得自己學(xué)到有一定程度的時(shí)候,這本書(shū)絕對(duì)是一本十分好的工具書(shū)!
題外話就到此為止,入正題:
這篇文章主要簡(jiǎn)單地說(shuō)說(shuō) fgets() 和 gets()
首先看看函數(shù)原型:
char* fgets(char *s, int n, FILE *stream);char* gets(char *s);一般使用fgets函數(shù),都是讀取文件當(dāng)中的n-1個(gè)字符到s中,其實(shí),此函數(shù)還有一個(gè)很好的用處就是從標(biāo)準(zhǔn)輸入流中讀取字符串,而且不用擔(dān)心輸入的字符個(gè)數(shù)超出了字符數(shù)組的大小而導(dǎo)致溢出的問(wèn)題!要怎樣做呢?如下:char??? str[10];fgets(str, siezof(str), stdin);
而如果使用gets函數(shù)的話,就不能保證上述的問(wèn)題不會(huì)出現(xiàn)(輸入的字符個(gè)數(shù)超出了字符數(shù)組的大小而導(dǎo)致溢出) ?不信你可以運(yùn)行下面的代碼:
char??? str[10];gets(str);當(dāng)然你得輸入10個(gè)以上的字符才能看到問(wèn)題到這里,fgets()的好處就不用再詳細(xì)說(shuō)了。值得注意的是:謹(jǐn)記fgets()只讀取n-1個(gè)字符。所以,fgets()讀取到換行符、文件尾或讀完n-1個(gè)字符便會(huì)進(jìn)行返回
給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow
總結(jié)
以上是生活随笔為你收集整理的C语言的fgets 与 gets的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 纯JS实现简易扫雷小游戏网页项目
- 下一篇: Python数据分析之pandas入门