1

我正在将我的 c++ 程序转换为 c。这是一个简单的阶乘函数。我在 c++ 程序中使用了一个有趣的方法,以便在函数每次调用自身时将其间隔越来越小。这就是它的样子:

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

它并不像我希望的那样容易地转换成 c。我的想法(这可能是不正确的)是

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

我收到一条错误消息:警告:初始化从没有强制转换的指针中生成整数 [默认启用]

你将如何在 c 中实现同样的效果?我真的很喜欢我在 C++ 中实现它的方式,并希望以类似的方式来实现它。

4

3 回答 3

4

您收到的警告与您的打印尝试无关。警告来自

char c = "";

您不能使用字符串文字初始化字符变量。如果你需要一个字符,用一个字符常量初始化它

char c = ' ';

如果需要字符串,请将其声明为指针或字符数组

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

这真的取决于你想要做什么。

但实际上你根本不需要那个c。C 中 C++ 代码的直接模拟将仅仅是

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

假设你numberint类型。

于 2013-09-27T16:53:36.600 回答
2

在 中C,对一个字符使用单引号,对 C 样式字符串使用双引号

所以

char c = "" ;

是错的。

你应该使用

char c = ' ';
于 2013-09-27T16:54:59.447 回答
0

你将如何在 c 中实现同样的效果?
就像是:

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

空格可以编辑到 printf 语句中,但是如果你想要一个 char 数组空间,你可以这样做:

char c[]={" "};

printf("%s:%s%d", "The number is", c, number * 3"; 
于 2013-09-27T16:57:20.047 回答