如何存储char *的值?

时间:2019-02-05 15:45:12

标签: c arrays pointers

我发现以下代码将int / char转换为二进制:

char* int2bin(int value, char* buffer, int bufferSize) {
    char *nextChar = buffer + bufferSize-1;            // location to write the least significant bit

    *nextChar = 0;  // add the null terminator

    do {
        nextChar--;
        (value & 1) ? *nextChar  = '1' : *nextChar  = '0'; // if set set to '1' else '0'
        value = value>>1;
        if (nextChar == buffer)
          break;
    } while (value);
    return nextChar;
 }

我知道我可以做到以下

 binString = int2bin(inputBuff[i], binaryBuffer, 17);
 fprintf (WriteTo, "%s\n", binString);

但是我现在想将刚进入转换的二进制位之一的binString中的char存储在要传递给其他地方的char数组中,但是由于缺乏理解指针,所以很难知道如何得到它。

我试图通过声明一个char数组并尝试存储该位来做到这一点:

char inputBuffStr[32];

然后...

binString = int2bin(inputBuff[i], binaryBuffer, 17);
inputBuffStr[i] = binString;

作为分析输入的一部分,我每增加一点,binString是char *类型。

我得到一个错误:无法将类型为“ char *”的值分配给类型为“ char”的实体“ inputBuffStr [i] = binString;”

如果有人可以解释我如何得到binString中存在的实际0或1?我似乎无法理解如何对值进行fprintf,但无法将其输出到char数组中?

1 个答案:

答案 0 :(得分:1)

您只需要使用strcpy,它将复制一个\0终止的C样式字符串:

char inputBuffStr[32];
strcpy(inputBuffStr,binString);

顺便说一句:您的问题与C ++无关,所以我将标记更改为C。