1.puts() 只能向標準輸出流輸出,而 fputs() 可以向任何流輸出。
2.使用 puts() 時,系統會在自動在其后添加換行符;而使用 fputs() 時,系統不會自動添加換行符。
那么這是不是意味著使用 fputs() 時就要在后面添加一句“printf("\n");”換行呢?看情況!如果輸入時使用的是 gets(),那么就要添加 printf 換行;但如果輸入時用的是 fgets(),則不需要。
因為使用 gets() 時,gets() 會將回車讀取出來并丟棄,所以換行符不會像 scanf 那樣被保留在緩沖區,也不會被 gets() 存儲;而使用 fgets() 時,換行符會被 fgets() 讀出來并存儲在字符數組的最后,這樣當這個字符數組被輸出時換行符就會被輸出并自動換行。
但是也有例外,比如使用 fgets() 時指定了讀取的長度,如只讀取 5 個字符,事實上它只能存儲 4 個字符,因為最后還要留一個空間給 ‘\0’,而你卻從鍵盤輸入了多于 4 個字符,那么此時“敲”回車后換行符就不會被 fgets() 存儲。數據都沒有地方存放,哪有地方存放換行符呢!此時因為 fgets() 沒有存儲換行符,所以就不會換行了。