2017-06-03 81 views
-4

我想用一個號碼(如在printf功能)更換標誌"%.4d"char* VARÇ - 交換%.4d與字符的int *號就像printf的

例如:

printf("| %.4d |", 2); 

,將打印:| 0002 |

我想是這樣的:

int num = 2; //local var for the example 
char *number = "| %.4d |", num; 
write(1,number,strlen(number)); 

但是打印:| %.4d |(不奇怪...)

:這部分是sighandler裏面,所以我不能使用printf

+2

我發現自己懷疑你試過的代碼產生了你聲稱的輸出,考慮到逗號運算符的語義。 – EOF

+0

'num'是信號處理程序的參數,還是全局的,還是什麼?可能使用'char number [] =「| 0000 |」;'然後根據需要用數字覆蓋數組中的零。奇怪的事實:'strlen()'沒有標記爲同步信號安全,但我不知道爲什麼不。改用'sizeof(number)-1'。 –

+0

你在'char * number =「|%.4d |」,num;'中聲明瞭'int num',然後另一個'num',爲什麼? –

回答

-1

使用sprintf

sprintf (number, "| %.4d |", num); 

Here的文檔

+5

'sprintf()'不比'printf()'更安全。 – EOF

+0

我不敢相信我還沒有想出這麼簡單的解決方案!謝謝! –