【求解释】关于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;
}