2012-09-22 49 views
0

由於某種原因,我的sprintf調用影響了我用來格式化新字符串的字符串。這裏是我的代碼:Sprintf影響格式化中使用的其他字符串?

string foo = "bar"; 
char salt[] = ""; 
sprintf(salt, "%c%c", foo[0], foo[1]); 

當我嘗試sprintf後打印foo,它沒有價值。如果我在sprintf之前打印它,那很好。

+0

C沒有預定義的稱爲'string'的類型。如何定義字符串?如果你只寫了'char * foo =「bar」;'或'char foo [] =「bar」;'',你的代碼會更清晰。 (拋出一個'const'也不是一個壞主意。) –

回答

1

您的結果緩衝區(salt)太小而無法保存該值。

string foo = "bar"; 
char salt[3] = ""; 
sprintf(salt, "%c%c", foo[0], foo[1]); 
+0

這個窗臺不起作用。我試圖打印字符串,它仍然沒有打印。 – Ray

+0

至少必須是'char salt [3]','sprintf'增加一個0結束符。 –

+0

我們走了。非常感謝! – Ray