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

Receivebyte()関数からバイトを受信して​​いるように見えるので、整数ではなくバイト(unsigned char)として格納する必要があります。整数を使用して1バイトを格納すると、3バイトのメモリが無駄になるためです。

それ以外の場合は、エコーの実装が機能するはずです。ただし、数値以外の文字を送信するユーザーに対するガードを追加したい場合もあります。

ASCII文字「5」および「3」(ASCIIコード53および51)を数値に変換する必要があります(ASCIIコーディングスキームでは、数値の範囲が48〜57であるため、それぞれから48を減算します)。

于 2010-11-01T10:37:31.313 に答える
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 に答える