2016-09-19 112 views
0

我有一個接受字符數組(即字符串)作爲參數的函數。有沒有辦法在C中傳遞這樣的字符串?

但是,整數變量的值也應該作爲字符串的一部分打印。

例如, 如果我有這樣的功能:

int var=10; 
void printStr(char str[]) 
{ 
    printf("%s", str); 
} 

,我需要與消息

「的變種的值打印整數變量「變種」的值爲%d」,VAR

我想這

printStr(("The value of var is %d", var)); 

但它沒有工作。

有沒有辦法做到這一點,而不將變量作爲參數傳遞給printStr()

在這種情況下,輸出應爲

var的值是10

回答

6

看來你需要的功能sprintf/snprintf用於生成字符串。

嘗試這樣:

char tempStr[30]; 
snprintf(tempStr, sizeof(tempStr), "The value of var is %d", var); 
printStr(tempStr); 

難道你需要什麼?

+0

@伊利亞這是一個很好的。但是,有沒有辦法做到這一點,而不是爲了將它傳遞給函數而創建一個字符串? –

+0

@J ... S如果允許只有一個參數(一個字符串),我們需要建立一個字符串。如果你可以在這裏改變一些東西(例如,如果你可以使用一個'struct'包含兩個值:string和int),你可以不用'sprintf' /'snprintf'。 – Ilya

+0

@J ... S不,字符串格式化通過調用一個函數來嚴格完成,沒有操作符用語言來完成,如蟒蛇。 – unwind

1

也許你可能會發現variable number of arguments to functionsGCC format attributes有助於建立你的事情。但是,您需要使用GCC作爲屬性,並且沒有任何可移植到其他編譯器的計劃。

然而,我不會搞砸這些東西,並找出一種沒有這個做事的方法。

+1

但是GCC格式屬性在其他編譯器方面是不可移植的,並且問題沒有GCC標記,是嗎? – harper

+0

@harper GCC格式屬性對於類型檢查很有用,但它們並不重要。我會編輯它,並說它只適用於GCC。 –

相關問題