Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 49770|回复: 68

SKILL中数据的输出函数print、println、printf、fprintf的使用

  [复制链接]
发表于 2013-4-23 22:02:35 | 显示全部楼层 |阅读模式
SKILL中数据的输出控制
1.数据的输出可以使用以下函数
  print、println、printf
print和println
print和println对不同数据类型采用默认显示格式。print和println采用以下格式显示数据:  
  数据类型          默认格式
     整形                     3
   浮点型                    5.2
   字符串            “Mary learned Skill”
   变量                bBox
      list                 (1 2 3)
print与println的区别
print直接在之前的数据后面输出,而println新的一行输出。请看下面例子:
  1. for( i 1 3 print( "hello" )) ;Prints hello three times.
复制代码
"hello""hello""hello"
  1. for( i 1 3 println( "hello" )) ;Prints hello three times.
复制代码
"hello"
"hello"
"hello"
printf 函数
printf函数采用格式输出。其格式一般为:
printf(格式控制,输出表列)
比如:
  1. printf("\n%-15s %-15s %-10d %-10d %-10d %-10d" layerName purpose rectCount labelCount lineCount miscCount
复制代码
上面例子中,printf括号中包含两个部分:
第一个部分为格式控制,是用双引号括起来的字符串。其中包含有各个格式说明,由格式说明符号”%”和格式字符组成。比如上例中的”%d”、”%s”。一般”%”后面为格式字符。格式控制中还可包含普通的字符,普通字符不会转换,直接输出。
第二部分为输出表列,输出表列为输出的各个数据,也可以是表达式。

比如下面例子:
  1. printf(“a=%d b=%d a+b=%d” a b a+b)
复制代码
当a=2 b=3时,以上printf函数输出为
“a= 2 b=3 a+b=5”

以下为一些常见的转义字符:
%d  整数(十进制)
%f  浮点型
%s  字符串或symbol
%c  字符输出,只输出一个字符
%n  数值
%L  List
%P  坐标点
%B  Bounding Box
请参考下面的例子:
aList = '(1 2 3)
printf( "\nthis is a list: %L" aList ) => t
This is a list: (1 2 3)
aList = nil
printf( "\nThis is a list: %L" aList ) => t
This is a list: nil
如果printf中数据类型如果与格式说明中的不匹配,那么printf函数将会产生一个错误!比如:
printf( "%d %d" 5 nil )
Message: *Error* fprintf/sprintf:format spec. incompatible with data – nil
上例中,第二个格式说明为输出整数,但是传递的为nil。
文件输出:
文件输出一般包括三个步骤:
1.使用outfile函数指定输出文件,outfile函数将会返还一个端口值。
2.使用print、println、printf函数向文件中输出数据
3.使用close函数关闭文件端口
print和println函数可以在第二个参数上指定输出端口来向文件中输出数据:
  1. myPort = outfile( "/tmp/myFile" )
  2. for( i 1 3 println( list( "Number:" i) myPort ))
  3. close( myPort )
复制代码
以上文件输出为:
("Number:" 1)
("Number:" 2)
("Number:" 3)
注:在向文件中输出结束后,最好立即使用close函数关闭文件。
printf函数不能向文件中输出数据,取而代之的是fprintf,其功能与printf函数一样,可以指定格式输出。fprintf第一个参数为输出文件端口。
  1. myPort = outfile( "/tmp/myFile" )
  2. for( i 1 3 fprintf( myPort "Number: %d\n" i ))
  3. close( myPort )
复制代码
输出结果为:
Number: 1
Number: 2
Number: 3


发表于 2013-5-26 18:23:35 | 显示全部楼层
了解,谢谢分享
发表于 2013-6-26 08:00:50 | 显示全部楼层
谢谢楼主 分享
发表于 2013-6-26 09:49:55 | 显示全部楼层
i am learning skill, thank you.
发表于 2013-7-4 12:14:21 | 显示全部楼层
学习啦,谢谢楼主
发表于 2013-7-19 10:38:46 | 显示全部楼层

回帖奖励 +1 SKILL币

这个是手册上的,我看了,上面是英文,虽然能看懂,学习这个后,更加明白了
发表于 2013-8-8 17:20:48 | 显示全部楼层
谢谢楼主 分享
发表于 2013-8-12 23:52:01 | 显示全部楼层
楼主辛苦了!
发表于 2013-9-2 09:55:07 | 显示全部楼层
学习了
发表于 2013-10-4 14:33:15 | 显示全部楼层
楼主辛苦辛苦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-4-24 10:00 , Processed in 0.171403 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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