写一个函数,得到两个字符串和数字,函数的签名:
void get_formated_integer(char *format, char *result, int num)
函数num
根据给定的数字转换format
并返回变量中的字符串result
,用于%b
将整数转换为数字的二进制,例如,对于调用:get_formated_integer("%b",&result, 18);
then*result
will获取字符串10010
我的代码:
#include <stdio.h>
void convert_binary(int num)//converts decimal number to binary
{
if(num>0)
{
convert_binary(num/2);
printf("%d", num%2);
}
}
void get_formated_integer(char *format, char *result, int num)
{
if(format[1]=='b')
convert_binary(num);
}
int main()
{
char result[100];
get_formated_integer("%b",&result, 18);
}
我的输出:
10010
我不明白怎么做
*result
才能得到字符串10010
对不起我的英语
首先,更换
void convert_binary(int num)//converts decimal number to bi
和
void convert_binary(int num, char * result) //converts decimal number to binary
为了有一个地方(result
)来存储结果。
二、替换它的主体——递归调用和直接打印
{
if(num>0)
{
convert_binary(num/2);
printf("%d", num%2);
}
}
和
{
static int i = 0; // Offset in result for storing the current digit
if(num>0)
{
convert_binary(num/2, result);
sprintf(result+i, "%d", num % 2);
++i;
} else
i = 0;
}
即用于递归调用(更新函数)和存储部分值的语句。
三、按照之前的改动,替换你原来的定义
void get_formated_integer(char *format, char *result, int num)
{
if(format[1]=='b')
convert_binary(num);
}
和
void get_formated_integer(char *format, char *result, int num)
{
if(format[1]=='b')
convert_binary(num, result); // Only this is different
}
四,在您的main()
函数末尾放置打印结果的语句(因为我们将递归调用中的直接打印更改为存储):
printf("%s\n", result);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句