c - 简单 C 程序中最奇怪的错误。 Linux 安装损坏?

标签 c linux ubuntu putty ioerror

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

#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 character值,因此使用 %c 打印 4 或 5 将打印出控制字符范围内的内容。输出控制字符可能是导致输出底部出现所有奇怪内容的原因。

%u 需要一个无符号整数作为输入,它会在打印前将整数转换为字符串。

我建议您阅读 tutorialreferenceprintf 样式的格式字符串上熟悉许多格式说明符之间的差异。

关于c - 简单 C 程序中最奇怪的错误。 Linux 安装损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606528/

相关文章:

c - 指向作为值传递的参数的指针?

c - 如何用if函数打开3个文件

linux根据文件名模式搜索文件

linux - 是否可以忽略平开窗中的类型错误?

linux - mmap如何使大文件处理更快?

linux - 使用 ssh 重启 linux web 服务器

c - 将 int 转换为 void* 或相反是什么意思?

php - 我们可以在 C 语言的 CGI 脚本中添加 PHP 代码吗?

python - Tornado 在 OSX 上失败但在 Ubuntu 上工作

linux - 在bash中检测公共(public)IP地址的方法