我有這樣的字符串。如何打印此字符串
char array1[250] = {"Array Values are %d,%d,%d,%d"};
而且我有四個整數這樣,
int var1 = 25,var2 = 78, var3 = -189,var4 = -200;
我想打印VAR1到VAR4在陣列1。我怎麼做?我已經有了array1本身的格式說明符。
我有這樣的字符串。如何打印此字符串
char array1[250] = {"Array Values are %d,%d,%d,%d"};
而且我有四個整數這樣,
int var1 = 25,var2 = 78, var3 = -189,var4 = -200;
我想打印VAR1到VAR4在陣列1。我怎麼做?我已經有了array1本身的格式說明符。
sprintf(array1, array1, var1, var2, var3, var4);
它。不過,我不確定C會同時對同一個字符串進行讀寫操作的反應如何,強烈建議先將它複製到一個單獨的變量中。
編輯:Per Roddy的評論我只想說不要做你所要求做的。格式說明符應該與數據分離,我很積極的使用這個應用程序可以節省25個字節的設計。
不要將格式說明符放在數組中。只是做
char array1[128]; // enough space for four ints and the string
sprintf(array1, "Array Values are %d,%d,%d,%d", var1, var2, var3, var4);
好的建議先生,但我想我說的方式 – user1293997
您正試圖寫入您的格式字符串,正如Alok已經指出的那樣,這是最簡單的方法,如果你想在一個變量中使用格式字符串,爲格式字符串定義一個單獨的變量 – nneonneo
@ user1293997在這種情況下使用一個臨時數組。 – ouah
'strlen(「Array Values is 25,78,-189,-200」)== 32';因此你的數組需要是33個字節或更大,這樣纔能有效。 – nneonneo
回覆此問題的一些答案:從http://pubs.opengroup.org/onlinepubs/9699919799/functions/sprintf.html:「如果複製發生在因sprintf調用而重疊的對象之間()或snprintf(),結果是不確定的。「 –