程序清单4.2_praise1.c程序_《C Primer Plus》P62

// 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();不明其理,相信
    一定要更好解决办法,待查中......
--------------------------------------------

*/

原文地址:http://blog.51cto.com/13555061/2126828

时间: 2024-10-17 07:27:18

程序清单4.2_praise1.c程序_《C Primer Plus》P62的相关文章

程序清单2.1_first.c程序_《C Primer Plus》P15

// first.cpp : 定义控制台应用程序的入口点. // /* 时间:2018年05月29日 22:49:40 代码:程序清单2.1_first.c程序_<C Primer Plus>P15 目的:进一步了解 printf()函数,定义变量与赋值 及 (\n)含义 */ #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) /* 一个简单的 C 程序 */ { int num; /* 定义一个名为 num

程序清单2.4_nogood.c_程序_《C Primer Plus》P26

// nogood.cpp : 定义控制台应用程序的入口点. // /*     时间:2018年05月31日 21:02:59     代码:程序清单2.4_nogood.c_程序_<C Primer Plus>P26     目的:认识代码的基本错误_花括号/声明/注释/分号 */ #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) (     int n, int n2, int n3;     /* 该程

程序清单2.5_stillbad.c_程序_《C Primer Plus》P27

// stillbad.cpp : 定义控制台应用程序的入口点. // /* stillbad.c -- 修正了语法错误的程序 */ /*     时间:2018年05月31日 21:51:51     代码:程序清单2.5_stillbad.c_程序_<C Primer Plus>P27     目的:了解语义的错误(程序运行结果并非作者的意图时,请动笔画图示意) */ #include "stdafx.h" int _tmain(int argc, _TCHAR* ar

程序清单3.2_print1.c_程序_《C Primer Plus》P37

// print1.cpp : 定义控制台应用程序的入口点. // /* print1.c -- 说明 printf()的一些属性 */ /*     时间:2018年06月03日 21:55:00     代码:程序清单3.2_print1.c_程序_<C Primer Plus>P37     目的:使用printf()函数时,格式说明符的数目和要显示的值的数目一定要相同. */ #include "stdafx.h" int _tmain(int argc, _TCH

程序清单3.3_bases.c程序_《C Primer Plus》P37

/* bases.c -- 以十进制.八进制.十六进制形式输出 100 */ // bases.cpp : 定义控制台应用程序的入口点. // /*     时间:2018年06月03日 23:23:06     代码:程序清单3.3_bases.c程序_<C Primer Plus>P37     目的:%d 显示十进制数字; %#0 显示八进制数字; %#X 显示十六进制数字; */ #include "stdafx.h" int _tmain(int argc, _T

程序清单3.4_print2.c程序_《C Primer Plus》P41

// print2.cpp : 定义控制台应用程序的入口点. // /* print2.c -- printf()的更多属性 */ /*     时间:2018年06月04日 23:49:04     代码:程序清单3.4_print2.c程序_<C Primer Plus>P41     目的:不同的数据类型要匹配不同的输出控制符(即书中说的:说明符) */ #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[])

程序清单3.6_altnames.c程序_《C Primer Plus》P47

# include <stdio.h> # include <inttypes.h> /* altnames.c -- 可移植的整数类型名 */ /*     时间:2018年06月05日 23:24:01     代码:程序清单3.6_altnames.c程序_<C Primer Plus>P47      目的:加头文件 #inlcude <inttypes.h>    */  int main(void) {     int16_t me16; me1

程序清单3.7_showf_pt.c程序_《C Primer Plus》P49

// showf_pt.cpp : 定义控制台应用程序的入口点. // /* showf_pt.c -- 以两种方式显示浮点值 */ /*     时间:2018年06月06日 21:10:25     代码:程序清单3.7_showf_pt.c程序_<C Primer Plus>P49     目的:printf("%e") 以指数记数法来显示浮点数字 */ #include "stdafx.h" int _tmain(int argc, _TCHAR

程序清单3.8_typesize.c程序_《C Primer Plus》P52

// typesize.cpp : 定义控制台应用程序的入口点. // /* typesize.c -- 输出类型的大小 */ /*     时间:2018年06月06日 23:39:52     代码:程序清单3.8_typesize.c程序_<C Primer Plus>P52     目的: 使用 %u, sizeof(数据类型),输出数据类型的字节大小  */ #include "stdafx.h" int _tmain(int argc, _TCHAR* argv