免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2090 | 回复: 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

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
发表于 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换成其他数字试试。

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
发表于 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

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP