所以这就是我的所有程序代码:
#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并通过PuTTY SSH客户端访问它 我最近安装了0MQ库,但我认为这不会导致错误。
如果有人有解决方案,请告诉我。 谢谢。
答案 0 :(得分:5)
我认为您希望在格式字符串中使用%u
而不是%c
。
%c
将输入解释为ASCII character值,因此使用%c
打印4或5将打印出控制字符范围内的内容。打印出控制字符可能是导致输出底部出现所有奇怪内容的原因。
%u
期望无符号整数作为输入,它会在打印前将整数转换为字符串。
答案 1 :(得分:0)
无限循环看起来毫无意义。
如果您想将unsigned char
视为小整数,则需要使用合适的格式代码打印,例如%u
。
答案 2 :(得分:0)
您当前正在使用%c
说明符将值4和5打印为字符。由于4和5不是可打印的Ascii字符,因此终端不显示任何内容。如果您希望打印“4”和“5”值,请将代码修改为printf("Address: %u, Type: %u \n", data.adr, data.type);
,因为这些是无符号值。