赵嘉琦 发表于 2020-6-6 20:14:20

新人发问,为什么用while ((ch = getchar()) != '\n')语句时候,不用scanf输入啦呀

#include <stdio.h>

int main()
{
        int ch;
       
        printf("请输入一行英文句子:");
       
        while ((ch = getchar()) != '\n')
        {
                if (ch>='A' && ch<='Z')
                {

                        ch = ch + 32;
                }       
                else if(ch>='a' && ch<='z')
                {
                        ch = ch - 32;
                       
                }
               
                putchar(ch);
        }
       
       
        putchar('\n');
       
       
       
       
        return 0;
}

Twilight6 发表于 2020-6-6 20:15:42

帮你顶~

赵嘉琦 发表于 2020-6-6 20:15:53

一般正常的话不是   printf("请输入一行英文句子:");的下一行要加上scanf(“”,&&)输入吗,怎么有了while就不加啦

赵嘉琦 发表于 2020-6-6 20:18:03

Twilight6 发表于 2020-6-6 20:15
帮你顶~

那谢谢你呦

Twilight6 发表于 2020-6-6 20:18:52

赵嘉琦 发表于 2020-6-6 20:18
那谢谢你呦

可惜我没学C不然铁定帮你一起解决问题{:10_297:}

qiuyouzhi 发表于 2020-6-6 20:19:34

赵嘉琦 发表于 2020-6-6 20:15
一般正常的话不是   printf("请输入一行英文句子:");的下一行要加上scanf(“”,&&)输入吗,怎么有了whi ...

因为只要不输入换行符(按下回车),就会一直getchar.

赵嘉琦 发表于 2020-6-6 20:22:17

qiuyouzhi 发表于 2020-6-6 20:19
因为只要不输入换行符(按下回车),就会一直getchar.

所以是不是跟while没关系,只要我有 getchar()) != '\n'就能自动得到一行文字

qiuyouzhi 发表于 2020-6-6 20:25:19

赵嘉琦 发表于 2020-6-6 20:22
所以是不是跟while没关系,只要我有 getchar()) != '\n'就能自动得到一行文字

不是,是一个字符
必须要用到while

赵嘉琦 发表于 2020-6-6 20:30:11

qiuyouzhi 发表于 2020-6-6 20:19
因为只要不输入换行符(按下回车),就会一直getchar.

明白啦谢谢大佬

笑叹, 发表于 2020-6-8 22:19:16

{:10_275:}

赵嘉琦 发表于 2020-6-9 18:17:10

笑叹, 发表于 2020-6-8 22:19


你个混贼~

BIO-张磊 发表于 2020-6-12 12:46:14

领取渔币

潜水小蓝人 发表于 2020-6-12 16:40:15

scanf和getchar貌似都是从键盘缓冲区调取的,比如你输入了fishc,即用了getchar又用了scanf的话。getchar会先取走f,这个时候键盘缓冲区还剩下ishc和换行符了,scanf就取不到f了,当然只是我个人理解,我也是初学的

赵嘉琦 发表于 2020-6-13 15:41:22

潜水小蓝人 发表于 2020-6-12 16:40
scanf和getchar貌似都是从键盘缓冲区调取的,比如你输入了fishc,即用了getchar又用了scanf的话。getchar会 ...

{:5_110:}棒诶
页: [1]
查看完整版本: 新人发问,为什么用while ((ch = getchar()) != '\n')语句时候,不用scanf输入啦呀