遇到的一个关于printf()的小问题。
2009-06-09 19:29
435 查看
一直以为我这个程序可以像我想象的那样,只有当我输入的字符串只有以 ‘#’结尾的时候才结束继而打印出每个字符对应的字符及编码对,可出人意料的是当我不小心直接在输入的字符串后面键入回车后(之前未键入#),它直接给我打印出来了!但程序并没有就此结束,而是当我敲一个回车后它就换行打印一次。如此进行下去。
自己在这里歪想了一阵,现在解释如下,如有过路的好汉,欢迎评论。
printf()函数在输出的时候通常是先将输出传给一个中介BUFFER,BUFFER中的内容在不断地传递给屏幕。而在这段程序中输入的字符串的时候,输入是默认以回车符结束的,1.因此在我输入一串不以‘#’结尾的字符串以回车结束后,程序主体将对这串字符进行处理,并将对这个字符串处理后的结果输出到BUFFER中,再刷新BUFFER将其输出到屏幕。2.当我再次敲入回车过后,系统以为又是另外一个字符串到来了,将对这个再次的输入进行处理(虽然只有一个换行符),所以这里的屏幕上的输出将另起一行。
#include <stdio.h>
#define STOP '#'
int main(void)
{
char ch;
int Counter = 0;
while((ch = getchar()) != STOP)
{
if(ch == '/n' )
printf("ch= NL/%d; ",ch);
else
printf("ch= %c/%d; ",ch,ch);
if(!(++Counter % 8))
putchar('/n');
}
}
2009-6-9
新的修改:
其实现在可以这样做,找一个足够大的字符数组,令其存放输入的字符串,然后再对这个字符串进行处理,合理选择判决条件以达到要求。
gets(ch)
while(ch[i] != '/n' && ch[i] != '# ')
很显然,有一点还是需要说明,即我们不能希望所输入的字符串中出现多个换行符,因为只有在我们回车的时候才会出现换行符,同时你的这轮输入也就结束了。
2009-7-4
自己在这里歪想了一阵,现在解释如下,如有过路的好汉,欢迎评论。
printf()函数在输出的时候通常是先将输出传给一个中介BUFFER,BUFFER中的内容在不断地传递给屏幕。而在这段程序中输入的字符串的时候,输入是默认以回车符结束的,1.因此在我输入一串不以‘#’结尾的字符串以回车结束后,程序主体将对这串字符进行处理,并将对这个字符串处理后的结果输出到BUFFER中,再刷新BUFFER将其输出到屏幕。2.当我再次敲入回车过后,系统以为又是另外一个字符串到来了,将对这个再次的输入进行处理(虽然只有一个换行符),所以这里的屏幕上的输出将另起一行。
#include <stdio.h>
#define STOP '#'
int main(void)
{
char ch;
int Counter = 0;
while((ch = getchar()) != STOP)
{
if(ch == '/n' )
printf("ch= NL/%d; ",ch);
else
printf("ch= %c/%d; ",ch,ch);
if(!(++Counter % 8))
putchar('/n');
}
}
2009-6-9
新的修改:
其实现在可以这样做,找一个足够大的字符数组,令其存放输入的字符串,然后再对这个字符串进行处理,合理选择判决条件以达到要求。
gets(ch)
while(ch[i] != '/n' && ch[i] != '# ')
很显然,有一点还是需要说明,即我们不能希望所输入的字符串中出现多个换行符,因为只有在我们回车的时候才会出现换行符,同时你的这轮输入也就结束了。
2009-7-4
相关文章推荐
- 关于IE6中遇到的select下拉框遇到的一个问题
- 关于创建一个输入端和两个输出端遇到问题的解决
- 遇到的一个关于 this 和toString()的问题
- 最近遇到一个非常棘手的需求是关于邮件转发的问题,请大家来帮忙给出出主意如何实现。
- 关于处理日期格式化问题遇到的一个坑
- laravel 5.2.45版本中遇到的一个关于session的问题
- 遇到了一个关于for update用索引锁行的问题,悬而未解
- 关于2.3系统使用FrameLayout遇到的一个问题
- 关于“任何软件工程遇到的问题都可以通过增加一个中间层来解决”的明悟
- 今天遇到的一个关于HttpSessionListener 的一个问题
- 网站中多个页面同时引用一个head和foot页面遇到的css样式时有时无的问题——关于路径问题
- 遇到一个关于网络请求的问题,真的很蛋疼
- 关于angular瀑布流插件ng-infinite-scroll.min.js遇到一个奇葩问题
- 遇到一个关于静态成员函数的问题
- 关于.net 开发web遇到的一个奇葩问题 drowdown未放置在runat="server"标记里
- 关于memcpy遇到的一个问题
- 一个关于SQL的问题,做做看,好想跟经常遇到的有点不同
- 关于Django版本不对遇到的一个问题
- 关于C语言中printf函数的一个问题
- 今天遇到一个关于STL中排序的问题, 怀疑是sort的bug!