我有一个我正在尝试调试的程序,但 Dynamic C 显然对字符串的处理方式与普通 C 不同(好吧,无论如何,字符数组)。我有一个函数,我制作了一个 8 字符长(好吧,10 包括 \0 )字符串 0 和 1,以显示 8 位 char 变量的内容。(IE,我给它编号 13,它返回字符串 "0001101\0" )
当我使用下面的代码时,它会打印出 !{happy face] 6 次(嗯,由于某种原因,第二个是单独的快乐脸),每个返回都以 0xDEAE 或 "!\x02.
我认为它会取消引用它并返回适当的字符串,但它似乎只是发送指针并尝试解析它。这可能看起来很傻,但我的经验实际上是在 C++ 和 Java 中,所以回到 C 会带来一些在后来的编程语言中处理的问题,我不完全确定如何处理(比如缺少字符串变量)。
我该如何修复此代码,或者如何以更好的方式来做我想做的事情(我想也许发送一个指向字符数组的指针并从函数中处理它可能会起作用,但我想我应该问看看我是否只是想重新发明轮子)。
目前我的设置是这样的:
这是 main() 的摘录
display[0] = '\0';
for(i=0;i<6;i++)
{
sprintf(s, "%s ", *char_to_bits(buffer[i]));
strcat(display, s);
}
DispStr(8,5, display);
这是有问题的功能:
char *char_to_bits(char x)
{
char bits[16];
strcpy(bits,"00000000\0");
if (x & 0x01)
bits[7]='1';
if (x & 0x02)
bits[6]='1';
if (x & 0x04)
bits[5]='1';
if (x & 0x08)
bits[4]='1';
if (x & 0x10)
bits[3]='1';
if (x & 0x20)
bits[2]='1';
if (x & 0x40)
bits[1]='1';
if (x & 0x80)
bits[0]='1';
return bits;
}
并且只是为了完成,另一个函数用于在特定位置输出到stdio窗口:
void DispStr(int x, int y, char *s)
{
x += 0x20;
y += 0x20;
printf ("\x1B=%c%c%s", x, y, s);
}