// praise1.cpp : 定义控制台应用程序的入口点。
//
/* praise1.c -- 使用不同类别的字符串 */

/*
    时间:2018年06月09日 22:21:56
    代码:程序清单4.2_praise1.c程序_《C Primer Plus》P62
    目的:scanf() 只读取了空格之前的英文单词,而非整个语句
*/
#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(),就可以看到输出结果了
    getchar();    // 有 scanf() 语句时 需加一个 getchar();
    
    getchar();    // 这里加了八句 getchar();才可以看到最终的输出结果
    getchar();    // 是因为 在输入语句时输入了: Hilary Bubbles
    getchar();    // Hilary 之后连空格在内共有 8 个 字符
    getchar();    // 至于"所以然" 我并未明白,只是知道要这样才解决显示结果
    getchar();    // 我想应该还有更好的解决办法,不然后面一百字符时 咋办
    getchar();    // 待查中......
    getchar();
    getchar();

    return 0;
}

/*
    在VS2010中运行结果:
--------------------------------------------
What's your name?
Hilary Bubbles
Hello, Hilary. What a super marvelous name!
--------------------------------------------
    google 翻译如下:

你叫什么名字?
希拉里 泡泡
你好,希拉里。 多么美妙的名字!

praise(称赞)/marvelous(不可思议的)
--------------------------------------------
    总结:
        1>.scanf(); 输入语句后,电脑只读取了第一个单词,
    空格之后的所有字符均没被输出到屏幕上;
        2>.但要最终显示结果,要加入相应个数的 getchar(),
    连空格在内之后的有几个字符就要加几个 getchar();
        3>.为什么要加那么多的 getchar();不明其理,相信
    一定要更好解决办法,待查中......
--------------------------------------------

*/