标题:问一个关于getchar函数的问题
只看楼主
kailun945
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-6-2
结帖率:75%
已结贴  问题点数:10 回复次数:2 
问一个关于getchar函数的问题
函数如下:
#include<stdio.h>
void display (char ch,int lines,int width);
int main(void)
{
    int ch;
    int rows,cols;
   
    printf("enter a character and two intergers:\n");
    while((ch=getchar())!='\n')
    {
        if(scanf("%d%d",&rows,&cols)!=2)
            break;
        display (ch,rows,cols);
        while (getchar()!='\n')   //请问这个while应该怎么解释?
            continue;
        printf("enter another character and two intergers;\n");
        printf("enter a newline to quit.\n");
    }
    printf("bye.\n");

    return 0;
}

void display (char cr,int lines,int width)
{
    int row,col;

    for(row=1;row<=width;row++)
    {
        for(col=1;col<=width;col++)
        putchar(cr);
        putchar('\n');
    }
}

对于第二个while循环有点理解不来,while (getchar()!='\n') continue;是不是可以这么解释当getchar没有读到换行键时,while循环进入到continue。
    但是我每次输入完程序都会有一个换行键留在队列之中,正常来说第二轮迭代的时候第一个读到的符合就应该是换行键。
    那岂不是直接进入while((ch=getchar())!='\n')程序判定。还是说这个判定在while (getchar()!='\n') continue;这个函数来执行。
搜索更多相关主题的帖子: getchar 函数 int while continue 
2017-06-18 22:22
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:10 
        while (getchar()!='\n')   //将缓冲区中多余的字符读取出来,然后丢掉。否则残留在缓冲区中的数据会造成大麻烦。
            continue;//这个continue没有任何用处,直接删掉,留下一个分号就可以了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-18 22:24
kailun945
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-6-2
得分:0 
谢谢,学习到了!
2017-08-23 21:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-478739-1-1.html




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

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