| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 290 人关注过本帖
标题:C语言求助
只看楼主 加入收藏
Pile_
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:92
注 册:2018-9-19
结帖率:100%
  已结贴   问题点数:20  回复次数:3   
C语言求助
请问一下,为什么程序输出的最后会出现一个   “-10”?

程序代码:
//读取输入,读到“#”字符停止,程序打印每个输入的字符以及对应的ASCII码,每行打印8个“字符-ASCII码”组合。

#include <stdio.h>
int main(void)
{
    char ch;
    int j = 0;

    while ((ch = getchar()) != '#')
    {
        printf("%c-%d  ", ch, ch);
        j++;
        if (j % 8 == 0)
            printf("\n");
    }

    return 0;
}

/*
vs2017下的输出如下

abcdefghijk
a-97  b-98  c-99  d-100  e-101  f-102  g-103  h-104
i-105  j-106  k-107
-10     

*/
2018-10-13 10:11
adssc
Rank: 1
等 级:新手上路
帖 子:33
专家分:7
注 册:2018-4-20
  得分:0 
#include <stdio.h>
int main(void)
{
    char ch;
    int j = 0;

    while ((ch = getch()) != '#')
    {
        printf("%c-%d  ", ch, ch);
        j++;
        if (j % 8 == 0)
            printf("\n");
    }

    return 0;
}

getch是讀字元
2018-10-13 11:18
no1xijin
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:江西
等 级:版主
威 望:19
帖 子:190
专家分:1126
注 册:2015-7-8
  得分:20 
末尾实际输出的不是 -10 而是 '\n'-10 '\n'的ASCII码值为10。将while条件修改下就不会出现 '\n'-10 了,具体见下面代码。
修改后无法循环输入,需要循环的话再套一层循环即可,在此不多赘述了。
说一下产生'\n'-10 的原因:getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).

程序代码:
//读取输入,读到“#”字符停止,程序打印每个输入的字符以及对应的ASCII码,每行打印8个“字符-ASCII码”组合。

#include <stdio.h>
int main(void)
{
    char ch;
    int j = 0;

    while ((ch = getchar()) != '\n')
    {
        printf("%c-%d  ", ch, ch);
        j++;
         if (j % 8 == 0)
             printf("\n");
    }

    // printf("%c-%d  ", '\n', '\n');   // 将注释去掉看看结果
    return 0;
}

/*
vs2017下的输出如下

abcdefghijk
a-97  b-98  c-99  d-100  e-101  f-102  g-103  h-104
i-105  j-106  k-107
-10     

*/


[此贴子已经被作者于2018-10-13 14:04编辑过]

2018-10-13 14:02
Pile_
Rank: 2
等 级:论坛游民
威 望:1
帖 子:21
专家分:92
注 册:2018-9-19
  得分:0 
回复 3楼 no1xijin
谢谢,问题已解决。
2018-10-14 10:16







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031143 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved