将int转换为字符串指针C.

时间:2017-05-20 12:05:51

标签: c

  

写一个函数得到两个字符串和数字,函数的签名:void get_formated_integer(char *format, char *result, int num)函数根据num转换给定的数字format并在变量{中返回一个字符串{ {1}},result将int转换为数字的二进制,例如,对于调用:%b然后get_formated_integer("%b",&result, 18);将获取字符串*result

我的代码:

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

     

抱歉我的英文

2 个答案:

答案 0 :(得分:1)

result是指向内存区域的指针。我将尝试提供简短的解释,您将找到有关指针here的更多信息(我强烈建议您阅读本教程)。

声明char result[100]时,为100个字符分配内存区域。指针是一个变量,其值为内存地址,因此您可以更改内存地址的值。基本上,您的函数应该做的是使用格式化的数字创建一个字符串,并将其放在result指示的内存地址。

答案 1 :(得分:0)

首先,替换

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);