找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25623|回复: 6

[技术讨论] [出错录]被Perl的printf坑到了……

[复制链接]
发表于 2011-6-1 18:50:21 | 显示全部楼层 |阅读模式
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;
发表于 2011-6-1 21:17:15 | 显示全部楼层
学过C语言的人都知道不能这么写
 楼主| 发表于 2011-6-1 22:09:53 | 显示全部楼层
本帖最后由 523066680 于 2011-6-1 22:11 编辑

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

CU那位二楼的跟帖一下点醒了,这意味着可以在字符串变量随意构建 %s ,自由度高。
 楼主| 发表于 2011-6-3 10:17:16 | 显示全部楼层
本帖最后由 523066680 于 2011-6-3 10:20 编辑

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

C语言可没有   printf "$str" 直接插入这样的东西。
用PERL 如果考虑C语言规范,恐怕很多东西都玩不了了
发表于 2015-3-4 01:21:01 | 显示全部楼层
回复 4# 523066680


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

    至少 tcc 是可以的,其他的不知道,不过我想过去应该都可以吧
发表于 2015-3-4 01:22:02 | 显示全部楼层
卧槽,不小心挖了一个好老的粪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:46 , Processed in 0.019208 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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