免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 589 | 回复: 6

[文本处理] awk getline赋值给变量 为什么可以少一个回车键 [复制链接]

论坛徽章:
0
发表于 2019-02-12 23:47 |显示全部楼层
本帖最后由 jzsjm1002 于 2019-02-13 15:39 编辑

代码如下
  1. #!/usr/bin/awk -f
  2. function randint(n){
  3.   return int(rand()*n+1)
  4. }

  5. BEGIN{
  6. maxnum=ARGC>1?ARGV[1]:10
  7. #ARGV[1]="-"
  8. srand()
  9. do{
  10. n1=randint(maxnum)
  11. n2=randint(maxnum)
  12. printf("%g + %g = ", n1 ,n2)
  13. while((input=getline) > 0)   #修改成 while(getline > 0)
  14.   if($0 == n1 + n2){
  15.   print "Right"
  16.   break
  17. }
  18. else if($0==""){
  19.   print n1 + n2
  20.   break
  21. }
  22. else
  23.   printf("wrong, try again: ")
  24. }
  25. while(input > 0)   #修改成 while(getline > 0)
  26. }
复制代码

最近在学gawk 有大神帮忙解答嘛 getline一个赋值给变量 一个没有 修改后需要多加一个回车键(或者说多一个空行)

123.png

论坛徽章:
1
2016科比退役纪念章
日期:2018-10-24 08:24:01
发表于 2019-02-13 09:51 |显示全部楼层
发贴,代码插到代码块里,看的舒服点。修改的代码后面注释一下就可以了,没必要发两块大部分一样的。
问题也尽量说明白清楚些嘛,什么叫多一个回车键?多在哪里?

论坛徽章:
0
发表于 2019-02-13 10:22 |显示全部楼层
回复 2# cfwyy

嗯 我改好了 执行结果 截图了

论坛徽章:
0
发表于 2019-02-13 11:05 |显示全部楼层
本帖最后由 landihua 于 2019-02-13 11:10 编辑

问题出在最下面的getline, 上面的getline和下面的getline没有任何关系,getline是控制行用的,下面的getline直接判断就卡在哪儿了,可以把最下面的getline换成其他数字试试。

论坛徽章:
1
2016科比退役纪念章
日期:2018-10-24 08:24:01
发表于 2019-02-13 14:57 |显示全部楼层
回复 3# jzsjm1002

getline是函数,你这样的写法,每调用一次getline函数 都要从标准输入读入一行,
所以你修改后的写法  do while循环判断的时候又在等待标准输入,回车或任意输入内容再回车,才会进入到下一次循环。
修改前的写法 getline的返回值已经给变量了,直接判断循环条件成立,就马上进入下一循环了,继续打出随机的算式。

论坛徽章:
0
发表于 2019-02-13 15:27 |显示全部楼层
回复 5# cfwyy

好的 谢谢

论坛徽章:
0
发表于 2019-02-13 15:33 |显示全部楼层
回复 4# landihua

好的 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP