[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] [出错录]被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;

学过C语言的人都知道不能这么写

TOP

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

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

CU那位二楼的跟帖一下点醒了,这意味着可以在字符串变量随意构建 %s ,自由度高。

TOP

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

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

C语言可没有   printf "$str" 直接插入这样的东西。
用PERL 如果考虑C语言规范,恐怕很多东西都玩不了了

TOP

回复 4# 523066680


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

    至少 tcc 是可以的,其他的不知道,不过我想过去应该都可以吧

TOP

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

TOP

返回列表