首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【求解释】关于scanf跟getchar的区别

2013-12-06 
【求解释】关于scanf和getchar的区别!我在网络上搜到这样的答复:读取字符时:scanf()以Space、Enter、Tab结束一

【求解释】关于scanf和getchar的区别!


我在网络上搜到这样的答复:

读取字符时:

scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);

getchar()以Enter结束输入,也不会舍弃最后的回车符;

读取字符串时:

scanf()以Space、Enter、Tab结束一次输入

gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!

但是我在实验中发现,scanf读取字符串的时候,回车符也会残留在缓冲区中,所以对这个不太理解,请求各位兄弟解释。

以下实验要使用两次getchar才能保证程序不会运行后直接退出:


// 4.2Praise1.cpp : 使用不同类别字符串
//

#include "stdafx.h"
#define PRAISE "What a super marvelous name!"

int _tmain(int argc, _TCHAR* argv[])
{
    char name[40];

    printf("What's your name?\n");
    scanf("%s",name);
    printf("Hello,%s.%s\n",name,PRAISE);
    getchar();
    getchar();
    return 0;
}

[解决办法]
这个和scanf还是getchar没关系,你所有的输入,都会在流/stream中,包括回车;回车之所以特殊,是因为流一般是“行缓冲”的,即只有你敲回车之后,才会把缓冲中的输入,放入流中。

热点排行