zhuangzitao 发表于 2021-10-9 15:58:04

getchar()跟ch = getchar()的区别在哪?

我一开始写了下面的代码,点击回车后只是换了行,还要再按一次回车才输出结果,结果还是错的。
#include <stdio.h>
#include <ctype.h>

int main(void)
{
        //输入英文字母,计算对应值的总和
        const int letter_count = {1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10};
        int scrabble = 0;
       
        printf("Enter a word: ");
       
        while (getchar() != '\n') {
                scrabble += letter_count;
        }
       
        printf("Scrabble value: %d\n", scrabble);
       
        return 0;
}

后面我改成ch = getchar()之后就正常了,这是为什么?这两个不一样吗?改之后的代码如下:
#include <stdio.h>
#include <ctype.h>

int main(void)
{
        //输入英文字母,计算对应值的总和
        const int letter_count = {1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10};
        int scrabble = 0;
        char ch;
       
        printf("Enter a word: ");
       
        while ((ch = getchar()) != '\n') {
                scrabble += letter_count;
        }
       
        printf("Scrabble value: %d\n", scrabble);
       
        return 0;
}

傻眼貓咪 发表于 2021-10-9 16:18:54

while (getchar() != '\n')只是做判断真假
while ((ch = getchar()) != '\n')做两件事,赋值和做判断

qiuyouzhi 发表于 2021-10-9 18:53:43

你每调用一次getchar,就会接收一个字符
不然怎么分辨你是想用刚才输入的字符还是再接收一个字符?
页: [1]
查看完整版本: getchar()跟ch = getchar()的区别在哪?