繁体   English   中英

简单的C程序引起的最奇怪的错误。 Linux安装损坏了吗?

[英]Weirdest errors with simple C program. Linux Installation corrupted?

这就是我所有的程序代码:

#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库,但是我不认为这是导致错误的原因。

如果有人对此有解决方案,请告诉我。 谢谢。

我认为您想在格式字符串中使用%u而不是%c

%c将输入解释为ASCII字符值,因此使用%c打印4或5将打印出控制字符范围内的内容。 打印出控制字符可能是导致输出底部所有奇怪内容的原因。

%u希望输入一个无符号整数,并且它将在打印之前将该整数转换为字符串。

我建议您阅读有关printf样式格式字符串的教程参考 ,以熟悉许多格式说明符之间的区别。

无限循环看起来毫无意义。

而且,如果要将unsigned char视为一个小整数,则需要使用合适的格式代码(例如%u进行打印。

当前,您正在使用%c说明符将值4和5打印为字符。 由于4和5是不可打印的Ascii字符,因此终端不会显示任何内容。 如果要查看已打印的值“ 4”和“ 5”,请将代码修改为printf("Address: %u, Type: %u \\n", data.adr, data.type); 因为这些是无符号值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM