| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 290 人关注过本帖
标题:这里的printf() 为什么没有打印值,编译和运行都没报错。
只看楼主 加入收藏
bb牛
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
这里的printf() 为什么没有打印值,编译和运行都没报错。
程序代码:
/*
**输出字符及其检验和
*/


#include <stdio.h>
#include <stdlib.h>

int
main( void )
{
    int ch;
    char checksum;

    checksum = -1;

    while( (ch = getchar()) != EOF ){

        putchar( ch );
        checksum = ch + checksum;

    }
    printf( "%d\n", checksum);


    return EXIT_SUCCESS;
}


这里应该在输入一串字符后把它原样输出,并且还要再输出其检验和,即checksum,为什么运行结果只输出字符串,不输出检验和呢?
我用的是codeblock, win7系统,不知道为什么一些程序经常是这样,即使是按书本上的代码原样复制编译都没问题,但不按想象的运行。

[ 本帖最后由 bb牛 于 2015-4-8 15:59 编辑 ]
2015-04-08 15:53
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
栓验和是什么?

人有多懒,编程就有多难。
2015-04-08 16:32
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:5 
是不是你的循环根本就没运行完?

人有多懒,编程就有多难。
2015-04-08 16:50
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:15 
不知道检验和具体是什么意思,但是从你的代码看checksum是把所有字符的值累加减1,那么定义类型为char应该不够吧。
担心没有退出循环产生误解扰EOF改为了\n
在百度上搜下检验和没看明白,但是看到了通常以十六进制表示,所以把输出改成了十六进制数。
程序代码:
int main(void)
{
    int ch;
    long checksum;

    checksum = -1;

    while ((ch = getchar()) != '\n'){

        putchar(ch);
        checksum = ch + checksum;

    }
    printf("\nchecksum = %#x\n", checksum);


    return EXIT_SUCCESS;
}

人有多懒,编程就有多难。
2015-04-08 17:08
bb牛
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-8
收藏
得分:0 
回复 4楼 TAAAAB
多谢,还有3楼提醒了我,是EOF的原因
2015-04-08 17:33
快速回复:这里的printf() 为什么没有打印值,编译和运行都没报错。
数据加载中...
 
   



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

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