caihuawuhen 发表于 2019-10-19 11:33:12

c语言 显示字符与字符对应的数字 特殊字符

if (ch ==10)
{
   printf("\n");
   printf("\\n");
printf ("%d", ch)
}

结果显示为
换行 \n 10 10
我的问题是为什么会显示两个10

caihuawuhen 发表于 2019-10-19 11:34:04

希望知道文题大神解答一下

2164930278 发表于 2019-10-19 11:38:53

把完整的代码弄上来
要是对的我觉得应该会打印

\
10

caihuawuhen 发表于 2019-10-19 12:04:25

本帖最后由 caihuawuhen 于 2019-10-19 19:39 编辑

完整代码

#include<stdio.h>

int main (void)
{
   int ch;
   
   while((ch = getchar()) != EOF )
   {
          if (ch ==10)
          {
               printf("\n"); //执行换行
               printf("\\n"); //打印 \n
               printf("%d", ch); //打印对应的ascii码值
          }
      else
      {
             printf(" %c", ch);
             printf(" %d", ch);
      }
   }
      return 0;
}



jackz007 发表于 2019-10-19 14:19:33

本帖最后由 jackz007 于 2019-10-19 14:22 编辑

caihuawuhen 发表于 2019-10-19 12:04
完整代码

#include


      你的代码能编译过去吗?
    int char ;
      不可以用保留字当变量名,你对变量 ch 的声明在哪里?

      我想,得改成这样吧?
#include<stdio.h>

int main (void)
{
      char ch                           ;
      while((ch = getchar()) != EOF ) {
                if (ch == 10) printf("\\n") ;
                else printf("%c" , ch)      ;
                printf(" %d\n", ch)         ;
      }
}

caihuawuhen 发表于 2019-10-19 19:27:39

打错了 是 int ch关键是重复打印了 printf(" %d", ch) 也就是出现了两个10 即
\n 10 10

caihuawuhen 发表于 2019-10-19 19:28:15

我的本意是只打印 \n 10

matrixgadener 发表于 2019-10-20 03:09:35

你要达到的目标通过代码看不出来,也不好帮你改。这里主要要说明两个问题:
1. getchar()
函数描述:int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。
返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
再次强调,获取“一个无符号字符”,再次强调“一个”“无符号”,返回int型

2. 键盘输入:
运行程序,敲下按键1和按键0,敲下回车,请问输入了几个字符?????
答案是3个,分别是‘1’,‘0’,‘回车符’,getchar()会分别处理这三个字符。
十进制与ASCII码对应关系:1-49,0-48,换行键-10
程序丝毫不差的执行命令,每个输出的10都有可能是回车键
.
.
所以
.
.
.
你看下你的回车键是不是坏了???
页: [1]
查看完整版本: c语言 显示字符与字符对应的数字 特殊字符