1

我希望用户使用 c=ReceiveByte() 命令输入 2 位数字。例如,我希望用户执行以下操作:

Enter 5
Enter 3
Output number 53 in ascii value on screen ( using hyperterminal )
Store number in a single array
Use that number for other loops etc.

我的草稿代码是:

.
.
int c1[3];
c1[0]=ReceiveByte();
c1[1]=ReceiveByte();
.
.
for(i=0;i<3;i++)
 TransmitByte(c1[i]);
.
.

这是正确的吗 ?还是我错误地存储了 2 位数字?

非常感谢你的帮助 !

4

2 回答 2

1

对于输出,您不需要修改 c1[0] 和 c1[1],因为它们已经包含输入的字符。正如您的代码所示,您只需要确保 c1[2] 包含有效字符,例如

c1[2] = '\n';

顺便说一句,如果您需要将输入的数字作为 int 获取:

int num = (c1[0] - '0') * 10 + (c1[1] - '0');
于 2010-11-01T10:36:57.100 回答
1

由于您似乎从 Receivebyte() 函数接收字节,因此您应该将它们存储为字节(无符号字符),而不是整数,因为使用整数存储单个字节会浪费 3 个字节的内存。

否则,您的 echo 实现应该可以工作 - 即使您可能想要添加对发送非数字字符的用户的保护。

您必须将 ASCII 字符“5”和“3”(ASCII 代码 53 和 51)转换为它们的数值(在 ASCII 编码方案中,从每个数字中减去 48,因为数字范围从 48 到 57)

于 2010-11-01T10:37:31.313 回答