鱼C论坛

 找回密码
 立即注册
查看: 8522|回复: 23

关于c的一个问题

[复制链接]
发表于 2013-4-29 10:00:17 | 显示全部楼层 |阅读模式
10鱼币
//求平均字符长度
1输入完毕后,先按回车键(不能省),再按ctrl+z,再回车(
不可可加诺干回车空格,但不能省,要有一个),再ctrl+z,才
结束。
2另外如果加上注释里面的printf则会出现输完ctrl+c之后
再输两个回车就会出现最后一次输入的内容

请问为什么要两个ctrl+z才可以结束而且必须是有严格的格式要
求,不能不在两个之间加回车。
还有就是有关第二个现象的疑问。
#include <stdio.h>
#include <string.h>
int main()
{
   char a[100];
   int n=0,len=0;
   float ave;
   while(scanf("%s",a)!=EOF)
   {
    n++;
    len=strlen(a)+len;
      //printf("%s\n",a);
   }
   ave=len/(double)n;
   printf("%lf ",ave);
   return 0;
}

最佳答案

查看完整内容

楼主经过我长时间的百度,你的问题终于让我找到了 楼主请看:关于为什么要两次Ctrl+z ,和scanf的读取机制有关:就是在输入流中如果存在有可读的字符,Ctrl+z就不会存放进输入缓冲区。 具体参考这里:http://zhidao.baidu.com/question/54039450.html
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-29 10:00:18 | 显示全部楼层
本帖最后由 不能说_-的秘密 于 2013-5-1 18:00 编辑

楼主经过我长时间的百度,你的问题终于让我找到了
楼主请看:关于为什么要两次Ctrl+z ,和scanf的读取机制有关:就是在输入流中如果存在有可读的字符,Ctrl+z就不会存放进输入缓冲区。
具体参考这里:http://zhidao.baidu.com/question/54039450.html
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-4-29 17:39:37 | 显示全部楼层
你的循环判断是-1,你输入个-1也是可以的跳出的
第二个问题  没看懂你说的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-29 19:48:15 | 显示全部楼层

第二个问题就是:
为什么另外如果加上注释里面的printf则会出现输完ctrl+c之后
再输两个回车就会出现最后一次输入的内容
例如:加上注释里面的printf后如果我输入,'i am',回车,ctrl+z,回车,回车。就会出现‘am’。

呃。。。还有就是我刚刚又对我自己的程序试了下-1貌似不可以,虽然理论上来说应该是可行的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-1 00:30:06 | 显示全部楼层
woailonglonga 发表于 2013-4-29 19:48
第二个问题就是:
为什么另外如果加上注释里面的printf则会出现输完ctrl+c之后
再输两个回车就会出现最 ...

我也试了一下,-1不能跳出循环啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-1 00:39:57 | 显示全部楼层
楼主我输完ctrl+c之后再输回车直接退出了??、、、
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-1 09:14:44 | 显示全部楼层
为什么我一个ctrl+Z然后回车就结束了~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-1 15:36:29 | 显示全部楼层
不能说_-的秘密 发表于 2013-5-1 09:14
为什么我一个ctrl+Z然后回车就结束了~~

不是吧。。。你方不方便发个截图给我?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-1 15:41:45 | 显示全部楼层
不能说_-的秘密 发表于 2013-5-1 09:14
为什么我一个ctrl+Z然后回车就结束了~~

呃。。。就是在Ctrl+C前截个图,谢谢了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-1 15:58:31 | 显示全部楼层
woailonglonga 发表于 2013-5-1 15:36
不是吧。。。你方不方便发个截图给我?

我用的vs2005不知道楼主用的是哪个??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-1 16:19:32 | 显示全部楼层
好吧,我用c++6.0也有这么个情况啊!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-1 17:59:20 | 显示全部楼层
那么你的第二个问题是不是可以这么解释为当你第一次输入ctrl+z的时候他并没有放到输入缓冲区??而缓冲区中的还是上一次输入的字符串?以至于最后输出的是上一次输入的字符串了?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-2 10:02:21 | 显示全部楼层
真不懂楼主的意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-4 08:33:40 | 显示全部楼层
不能说_-的秘密 发表于 2013-5-1 17:48
楼主经过我长时间的百度,你的问题终于让我找到了
楼主请看:关于为什么要两次Ctrl+z ,和scanf的读取机制 ...

  因为五一假放完了,所以一直没来得及回复,不好意思。
  我看了你发的链接,然后查了有关scanf和缓存的相关内容,还是不太能理解这里的这句话:就是在输入流中如果存在有可读的字符,Ctrl+z就不会存放进输入缓冲区。我是这样想的如果我输入:u are right(回车)两个ctrl+z,首先放入缓存区域的是u are right(回车)(不知道对不对),然后scanf一个单词一个单词的读,读完回车键以后,将ctrl+c放入缓存区,然后scanf读取,这里也还是只要一个ctrl+c的说。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-4 09:06:59 | 显示全部楼层
woailonglonga 发表于 2013-5-4 08:33
因为五一假放完了,所以一直没来得及回复,不好意思。
  我看了你发的链接,然后查了有关scanf和缓存的 ...

输入流结束的条件就是:^z 之前不能有任何字符输入(回车除外),否则 ^z 起不到流结束的作用。
楼主看这篇文章写的很清楚!http://hi.baidu.com/xmuwubo/item/b02f7a932f9aebbacc80e548http://hi.baidu.com/xmuwubo/item/b02f7a932f9aebbacc80e548
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-4 09:07:08 | 显示全部楼层
强烈支持楼主ing……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-4 09:08:08 | 显示全部楼层
不能说_-的秘密 发表于 2013-5-4 09:06
输入流结束的条件就是:^z 之前不能有任何字符输入(回车除外),否则 ^z 起不到流结束的作用。
楼主看这 ...

额。。。为什么我加链接加不上去啊。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-4 10:42:24 | 显示全部楼层
不能说_-的秘密 发表于 2013-5-4 09:08
额。。。为什么我加链接加不上去啊。。。

呃。。不知道
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-4 10:43:45 | 显示全部楼层
不能说_-的秘密 发表于 2013-5-4 09:08
额。。。为什么我加链接加不上去啊。。。

要不你发消息看用消息可以把链接发给我不,你上面的那个链接我搜不到。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-4 17:27:34 | 显示全部楼层
woailonglonga 发表于 2013-5-4 10:43
要不你发消息看用消息可以把链接发给我不,你上面的那个链接我搜不到。。。。

上次的连接写重了。。。。是这个    http://hi.baidu.com/xmuwubo/item/b02f7a932f9aebbacc80e548
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-30 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表