0

だから、これは私のプログラムコードのすべてです:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

typedef struct {
    unsigned char adr;
    unsigned char type;
} stru;

int main (int argc, char *argv[]){

    while(1){

    stru data;

    data.adr = 5;
    data.type = 4;

    printf("Address: %c, Type: %c \n", data.adr, data.type);

    }

    return 0;   
}

「gcc testprog.c -o testprog」でコンパイルしました。

出力は次のとおりです。

Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
Address: , Type:
^CAddress: , Type:
PuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTYPuTTY^C

Virtual Box で Ubuntu 12.04 を実行していて、最近 0MQ ライブラリをインストールした PuTTY SSH クライアント経由でアクセスしていますが、それがエラーの原因になっているとは思いません。

誰かがこれに対する解決策を持っている場合は、私に知らせてください。ありがとうございました。

4

3 に答える 3

4

%uではなくフォーマット文字列で使用したいと思います%c

%cは入力をASCII 文字値として解釈するため、4 または 5 を%c出力すると、制御文字範囲内の何かが出力されます。制御文字を印刷することが、出力の下部にあるすべての奇妙なものを引き起こしている可能性があります。

%u入力として符号なし整数を期待し、出力する前に整数を文字列に変換します。

多くのフォーマット指定子の違いを理解するために、 -style フォーマット文字列に関するチュートリアルまたはリファレンスを読むことをお勧めします。printf

于 2012-09-26T16:45:27.110 に答える
0

無限ループは非常に無意味に見えます。

また、を小さな整数として扱いたい場合はunsigned char、のような適切なフォーマットコードで印刷する必要があります%u

于 2012-09-26T16:48:37.937 に答える
0

現在、指定子を使用して値 4 と 5 を文字として出力してい%cます。4 と 5 は印刷可能なアスキー文字ではないため、端末には何も表示されません。値 '4' と '5' を出力したい場合は、コードを に変更してくださいprintf("Address: %u, Type: %u \n", data.adr, data.type);。これらは符号なしの値だからです。

于 2012-09-26T16:50:35.133 に答える