标题:
[技术讨论]
[出错录]被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://www.bathome.net/)
Powered by Discuz! 7.2