2013-09-27 99 views
1

我正在將我的C++程序轉換爲c。這是一個簡單的因子函數。我在C++程序中使用了一種有趣的方法,以便每次調用它自己的函數時,它的空間越來越小。這看起來是這樣的:使用'char'在C中用佔位符設置字段寬度

cout << setw(number * 3) << "" << "number is: " << number << endl; 

它不像我希望的那樣容易翻譯成c。我的想法(這可能不正確)是

char c = ""; 
printf("%*c number is: %lo\n", number * 3, c, number); 

我收到一個錯誤,指出:警告:初始化將指針整數,未作施放[默認啓用]

你將如何實現這在c中有相同的效果嗎?我真的很喜歡我用C++實現它的方式,並且希望以類似的方式來實現它。

+1

可能重複printf](http://stackoverflow.com/questions/4133318/variable-sized-padding-in-printf) – hyde

回答

2
C

,您可以使用單引號一個字符,使用雙引號對於C風格的字符串

所以

char c = "" ; 

是錯誤的。

你應該使用

char c = ' '; 
+0

你忘了提及他不應該手動添加填充。 – 2013-09-27 17:04:13

+0

是的,你是對的。 –

4

您收到的警告與您的打印嘗試無關。警告來自

char c = ""; 

您不能用字符串文字初始化字符變量。如果你需要一個字符,一個字符常量

char c = ' '; 

如果你需要一個字符串,聲明爲指針或字符數組初始化它

const char *c = ""; 
char c[] = ""; 

這真的取決於你想什麼去做。

但實際上你完全不需要那個c。的C++代碼在C直接模擬將是一個單純的

printf("%*snumber is: %d\n", number * 3, "", number); 

假設你numberint類型。

0

你將如何實現在C這個同樣的效果?
喜歡的東西:

printf("%s: %d", "The number is", number * 3"; 

空間可以編輯到printf語句,但是如果你想有一個字符數組空間,你可以不喜歡它:

char c[]={" "}; 

printf("%s:%s%d", "The number is", c, number * 3"; 
[可變大小的填充在