Board logo

标题: [技术讨论] [出错录]被Perl的printf坑到了…… [打印本页]

作者: 523066680    时间: 2011-6-1 18:50     标题: [出错录]被Perl的printf坑到了……

http://bbs.chinaunix.net/thread-1852949-1-1.html
$str='%E5%8D%83%E5%B3%B6%E6%B9%96%E4%BA%8B%E4%BB%B6';
printf "$str\n";
<STDIN>;

以上$str中存储的是一段文字在网址中的形式(是UTF-8编码 ?)

printf显示:
0.000000E+0005       0
                        %E503060.000000E+000609
                                                              %E40A       00.000
000E+00040B06

===========================================
其实我当时想着像print 那样用应该也OK,这样我就统一用printf,用了一阵子, 原来还是需要注意的。
按照printf 的规则就没问题了:
printf "%s\n",$str;
作者: Demon    时间: 2011-6-1 21:17

学过C语言的人都知道不能这么写
作者: 523066680    时间: 2011-6-1 22:09

本帖最后由 523066680 于 2011-6-1 22:11 编辑

这个,怎么说呢,用了perl感觉自由度高了,放纵了……
C语言里都没想过这么写。

CU那位二楼的跟帖一下点醒了,这意味着可以在字符串变量随意构建 %s ,自由度高。
作者: 523066680    时间: 2011-6-3 10:17

本帖最后由 523066680 于 2011-6-3 10:20 编辑

$str的值是从外部文本获取的,事先没有考虑到里面会包含%B 之类的
1楼作为一个最直接的提取。

C语言可没有   printf "$str" 直接插入这样的东西。
用PERL 如果考虑C语言规范,恐怕很多东西都玩不了了
作者: CrLf    时间: 2015-3-4 01:21

回复 4# 523066680


   
C语言可没有   printf "$str" 直接插入这样的东西。

    至少 tcc 是可以的,其他的不知道,不过我想过去应该都可以吧
作者: CrLf    时间: 2015-3-4 01:22

卧槽,不小心挖了一个好老的粪




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2