在C中的char数组中存储unsigned int变量的值

时间:2016-02-24 01:36:39

标签: c

我有4个变量

unsigned r1 = 255, r2 = 204, r3 = 0, r4 = 255;

我需要将它们作为字符串“(255,204,0,255)”

返回

我不知道如何将整数值添加到char *

2 个答案:

答案 0 :(得分:1)

您可以使用sprintf

char str[50];
sprintf(str, "(%d, %d, %d, %d)", r1, r2, r3, r4);

现在字符串str包含字符串(255, 204, 0, 255)

答案 1 :(得分:-1)

您应在问题中提及您无法使用sprintf。如果您在创建问题时忘记了,请稍后再提及。我建议你更新你的问题。但是,这是一个没有sprintf

的替代解决方案
#include <stdio.h>
#include <stdlib.h>

int  convert(unsigned char number, char* str){
    static int k = 1;  // static int is important
    int i = k, j;
    char temp;
    if (number == 0){   // handling of 0
        str[k++] = '0';
        str[k++] = ',';
        return k - 1;
    }
    while(number){
        str[k++] = "0123456789ABCDEF"[number % 10];  // get reversed output 
        number = number / 10;
    }
    for (j = k - 1; i < j; i++, j--){  // reversing back the string
        temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
    str[k++] = ',';
    return k - 1;
}

int main(){

    unsigned char r = 255;
    unsigned char g = 221;
    unsigned char b = 0;
    unsigned char a = 245;


    char color[20] = {0};  // always initialize all with 0

    int last;

    color[0] = '(';

    convert(r, color);
    convert(g, color);
    convert(b, color);
    last = convert(a, color);

    color[last] = ')';

    printf("%s\n", color);
    return 0;
}

如果您在C++

中执行此操作,可以大大改善上述答案