| 
 | 
 
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新的一行输出。请看下面例子:- for( i 1 3 print( "hello" )) ;Prints hello three times.
 
  复制代码 "hello""hello""hello"- for( i 1 3 println( "hello" )) ;Prints hello three times.
 
  复制代码 "hello" 
"hello" 
"hello" 
printf 函数 
printf函数采用格式输出。其格式一般为: 
printf(格式控制,输出表列) 
比如:- printf("\n%-15s %-15s %-10d %-10d %-10d %-10d" layerName purpose rectCount labelCount lineCount miscCount
 
  复制代码 上面例子中,printf括号中包含两个部分: 
第一个部分为格式控制,是用双引号括起来的字符串。其中包含有各个格式说明,由格式说明符号”%”和格式字符组成。比如上例中的”%d”、”%s”。一般”%”后面为格式字符。格式控制中还可包含普通的字符,普通字符不会转换,直接输出。 
第二部分为输出表列,输出表列为输出的各个数据,也可以是表达式。 
比如下面例子:- 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函数可以在第二个参数上指定输出端口来向文件中输出数据:- myPort = outfile( "/tmp/myFile" )
 
 - for( i 1 3 println( list( "Number:" i) myPort ))
 
 - close( myPort )
 
  复制代码 以上文件输出为: 
("Number:" 1) 
("Number:" 2) 
("Number:" 3) 
注:在向文件中输出结束后,最好立即使用close函数关闭文件。 
printf函数不能向文件中输出数据,取而代之的是fprintf,其功能与printf函数一样,可以指定格式输出。fprintf第一个参数为输出文件端口。- myPort = outfile( "/tmp/myFile" )
 
 - for( i 1 3 fprintf( myPort "Number: %d\n" i ))
 
 - close( myPort )
 
  复制代码 输出结果为: 
Number: 1 
Number: 2 
Number: 3 
 
 
 |   
 
 
 
 |