首页 > 解决方案 > 读取一个数字,应该算作一个符号

问题描述

我想制作一个程序,该程序使用从标准输入中读取数字列表(每行一个)scanf()并打印横向图。

例如,我使用了我创建的数据文件:

./p6 < 测试/p6-testdata

5:#####
40:######################################## 51 :################################################ ##
...
26:########################## 46:############### ###############################
14:##############

这是我第一次尝试的代码:

int main ()
{

  int i;      //i is integer and s is symbol
  char s = '#'; //s is a character with symbol should be converted

  printf ("Enter an integer\n");
  scanf ("%d", &i);
  i = s; // i is an interger from input should be converted to s

  printf ("%d: %d\n", i, s); 

  return 0;
}

输出:

Enter an integer
35: 35

我不明白为什么或如何?

请帮我。

标签: cscanfsymbols

解决方案


打印 35:35 的原因是因为您首先将 # 复制到 i 中,然后将 s 和 i 都打印为整数 (%d)。# 在 ascii 中是 35。

打印字符的说明符是 %c。


推荐阅读