// 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();不明其理,相信 一定要更好解决办法,待查中...... -------------------------------------------- */
程序清单4.2_praise1.c程序_《C Primer Plus》P62
原创
©著作权归作者所有:来自51CTO博客作者广西梵音的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章