C 中是否應避免使用C語言函式

時間 2021-05-13 06:56:48

1樓:大段長安

沒有必要可以避免吧,除非發現特別不利的影響,比如影響了程式的效率。

我不是專業程式設計師,所以一貫在c++中寫入一些c函式的。

就從你的舉例來說,printf的可讀性確實要好一些。

2樓:SuperFashi

是的,C++使用時除非實在沒有替代品(例如exit函式)否則一定避免使用C。例如不用sprintf而用stringstream。

但是有乙個例外,就是你對效率要求很高時,還是C函式快。

3樓:汪周洋

盡量使用c++標準庫的類操作字串,格式化輸入輸出,檔案讀寫等等,能用stl的別用c語言庫函式,別在乎那點效能損耗,程式穩定bug少要重要得多

4樓:程式碼之詩

就本問題而言,boost::format 已經是好答案。

scanf 和 printf 是特例,不要推廣。不定引數的C函式並不多。

建議去看看 GCC 中 STL。應該知道,STL 下面是大把的C呼叫。

非要乙個通用答案的話,那好:

1、盡可能工作在最高的抽象層上。能用 shell script 解決的問題不要動用程式語言,哪怕是 python。同理,能用 STL 的時候不用 C 函式。

2、確有需求的時候不要忌諱任何程式語言,哪怕是C和彙編。當你只有乙個8M主頻1K記憶體的51,你的選擇很有限。

3、任何庫,哪怕是標準庫、POSIX庫,都是用來解決問題而不是用來為難你的。難到無法快速(以年度計算)解決的問題,要麼已經有人解決等你用 google 或 stackoverflow 去發現他們,要麼不該是你的工作——除非老闆給你漲薪水。

4、軟體總比硬體貴。51微控制器執行不了的庫,換STM;STM執行不了的庫,換ARM9+;再執行不了的庫,換INTELAMD。再不行就讓老闆申請863用銀河天河太湖吧。

總之,不要為省下10K軟妹幣的硬體,你花上半年加班。

5樓:

boost::format

#include

#include

using namespace std;

int main( )

6樓:573xmcgcg

第一種寫法:

cout

<<"("<<

x<<"),"

<<"("<<

y<<"),"

<<"("<<

z<<")"<<

endl

;第二種寫法:

//由於題目中使用了 %d ,所以假定型別為 intvector

output=;

bool

first_element

=true

;for

(auto

target

:output

)//C++11

cout

<

;第三種寫法(C++11):

template

T>void

print(T

target

)template

typename

...Tpack

>void

print(T

target

,Tpack

...targets

)int

main()

C語言和C 中,為什麼malloc函式需要傳入申請的記憶體大小,而free時候卻不需要傳大小呢?

Hades 前面說書裡面說過,我忙猜,在申請記憶體的時候時間上申請的是乙個資料結構,包含頭部和可以位址資訊,free的時候去資料結構裡找就行了。比如裡要100記憶體,可能實際申請了110的記憶體多的就用來存放一些和記憶體相關的資訊了別。 白潔 多方面的因素 也許包括歷史因素 不存在對錯。c 的all...

C語言中不使用strcmp函式,怎麼用指標實現兩個字串的大小比較

這是微軟在UCRT中的實現,供參考 strcmp compare two strings,returning less than,equal to,or greater than Purpose STRCMP compares two strings and returns an integer t...

學C語言的過程中是否要敲一遍C的庫函式?

請問你是出於什麼目的想要重新寫一遍標準庫里的函式?如果是想要學習這些函式背後的演算法,那麼你應該去讀一本演算法書,比如 演算法導論 如果你只是想更熟悉C語言的語法,那麼去寫乙個有實用價值的專案會更好一點。 首先你要搞清楚,你是在學習C語言,那麼自己用自己的方式實現一邊C標準庫,首先對自己掌握C語言的...