RT...
比如:
char a[10] = {0};
sprintf(a, "111%s222", b);
其中b是char *型別的。如果b=NULL的話,vs2010的結果會是“111(null)222”。我的預期結果是"111222",請問各位大俠如何解決啊……跪求了!謝謝!
uj5u.com熱心網友回復:
最后來個字串替換。(null)替換為空uj5u.com熱心網友回復:
sprintf(a, "111%s222", b?b:"");
uj5u.com熱心網友回復:
不可以哦,如果字串里面本身包含“(null)”,也會被替換了
uj5u.com熱心網友回復:
相當于進行了一次判斷,怕影響效率……
有沒有其他方法?還是說sprintf都是要進行判斷?
uj5u.com熱心網友回復:
C里面很多使用指標作為引數傳遞的情況,很多時候都不允許為空,所以,你應該自己保證b的值,而不是靠呼叫方判斷即:
1)在b的來源處保證b不為空,如果為空不要進行后續呼叫
2)如果保證不了,就只能呼叫處判斷了
uj5u.com熱心網友回復:
c++builder里有個format可以解決轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/98817.html
標籤:基礎類
上一篇:新人求助帖
下一篇:MFC實作遍歷檔案夾
