fputs()函数
fputs() 函數也是用來顯示字符串的,它的原型是:
# include <stdio.h>
int fputs(const char *s, FILE *stream);
s 代表要輸出的字符串的首地址,可以是字符數組名或字符指針變量名。
stream 表示向何種流中輸出,可以是標準輸出流 stdout,也可以是文件流。標準輸出流即屏幕輸出,printf 其實也是向標準輸出流中輸出的。
fputs() 和 puts() 有兩個小區別:
那么這是不是意味著使用 fputs() 時就要在后面添加一句“printf("\n");”換行呢?看情況!如果輸入時使用的是 gets(),那么就要添加 printf 換行;但如果輸入時用的是 fgets(),則不需要。
因為使用 gets() 時,gets() 會將回車讀取出來并丟棄,所以換行符不會像 scanf 那樣被保留在緩沖區,也不會被 gets() 存儲;而使用 fgets() 時,換行符會被 fgets() 讀出來并存儲在字符數組的最后,這樣當這個字符數組被輸出時換行符就會被輸出并自動換行。
但是也有例外,比如使用 fgets() 時指定了讀取的長度,如只讀取 5 個字符,事實上它只能存儲 4 個字符,因為最后還要留一個空間給 '\0',而你卻從鍵盤輸入了多于 4 個字符,那么此時“敲”回車后換行符就不會被 fgets() 存儲。數據都沒有地方存放,哪有地方存放換行符呢!此時因為 fgets() 沒有存儲換行符,所以就不會換行了。
下面寫一個程序驗證一下:
輸出結果是:
請輸入一個字符串:i love you
i love you
Press any key to continue
我們看到讀取 19 個字符足夠存儲“i love you”,所以 fgets() 最后會存儲換行符。這樣 fputs() 輸出時這個換行符就能換行了。
下面再將讀取的字符改小一點看看:
輸出結果是:
請輸入一個字符串:i love you
i loPress any key to continue
我們看到并沒有換行。
值得說明的是,雖然 gets()、fgets()、puts()、fputs() 都是字符串處理函數,但它們都包含在 stdio.h 頭文件中,并不是包含在 string.h 頭文件中。
STM32重定向:https://blog.csdn.net/ranhui_xia/article/details/23910391
總結
- 上一篇: Docker 是什么,组成
- 下一篇: lineNumber: 1; colum