社区
C语言
帖子详情
c语言转义字符的输出
hit_liuanhuaming
2010-06-17 09:11:23
请教一个输出路径名的问题,如路径C:\Program Files\360safe\360Safebox,事先声明一下,这个路径是用驱动程序从底层得到的,不能改变,即不可以将字符'\'用'\\'代替,也不能逐次判断字符,找到'\',然后用'\\'或'/'代替,因为转义字符'\'在c语言中是得不到的,已经做过测试了,像C:\\program\360 字符长度只有12,没有'\'的3个长度,请问一下各位高手,怎么能用printf打印出该路径……等等等
...全文
748
17
打赏
收藏
c语言转义字符的输出
请教一个输出路径名的问题,如路径C:\Program Files\360safe\360Safebox,事先声明一下,这个路径是用驱动程序从底层得到的,不能改变,即不可以将字符'\'用'\\'代替,也不能逐次判断字符,找到'\',然后用'\\'或'/'代替,因为转义字符'\'在c语言中是得不到的,已经做过测试了,像C:\\program\360 字符长度只有12,没有'\'的3个长度,请问一下各位高手,怎么能用printf打印出该路径……等等等
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hit_liuanhuaming
2010-06-20
打赏
举报
回复
我的问题解决了,虽然没有一个回答令我满意的,不过还是散分了……再次感谢大家的回答
赵4老师
2010-06-18
打赏
举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
无汇编无真相!
Tiger-1985
2010-06-18
打赏
举报
回复
很明显,这个是驱动程序有问题
它给你一个错误值,你又怎么能把它转换成一个正确值呢
不要在这上面花时间了,抓住问题的本质
jvs
2010-06-18
打赏
举报
回复
[Quote=引用 2 楼 mstlq 的回复:]
引用楼主 hit_liuanhuaming 的回复:
请教一个输出路径名的问题,如路径C:\Program Files\360safe\360Safebox,事先声明一下,这个路径是用驱动程序从底层得到的,不能改变,即不可以将字符'\'用'\\'代替,也不能逐次判断字符,找到'\',然后用'\\'或'/'代替,因为转义字符'\'在c语言中是得不到的,已经做过测试了,像C:\\program\36……
[/Quote]
这是可以肯定的
ForestDB
2010-06-18
打赏
举报
回复
LZ理解有偏差,只有0x5C(内存中存的)或者'\\'(这是一个字符,表示\的字面值)。
CVA4508M
2010-06-18
打赏
举报
回复
'\'是当然找不到的。。。汗,楼主该复习C语言了。。
但你可以找到'\3'和'\P'然后把它替换成"\\3"和"\\P"
CVA4508M
2010-06-18
打赏
举报
回复
说白了,是驱动传上来的路径不是一个合法路径
驱动谁写的?找他改BUG去。。。
arong1234
2010-06-17
打赏
举报
回复
这个问题完全出于对于\的误解!'\'不是个字符,'\\'才是。你从驱动里得到的永远时'\\',而不可能时'\'!而\作为转义符出现,永远只有在你以显式字符串方式写在代码里才是,任何其他情况都不会出现你所担心的东西[Quote=引用 9 楼 hit_liuanhuaming 的回复:]
能找到也行,现在的问题是这个'\'根本得不到…也就是说不能用char path[i]=='\'判断,因为'\'在c语言中是不当做字符处理的,而且微软出品的文件路径恰好是以'\'隔开,确实是个悲剧,用驱动程序从底层传上来的路径根本没法写到数据库里面显示出来
[/Quote]
hit_liuanhuaming
2010-06-17
打赏
举报
回复
能找到也行,现在的问题是这个'\'根本得不到…也就是说不能用char path[i]=='\'判断,因为'\'在c语言中是不当做字符处理的,而且微软出品的文件路径恰好是以'\'隔开,确实是个悲剧,用驱动程序从底层传上来的路径根本没法写到数据库里面显示出来
东莞某某某
2010-06-17
打赏
举报
回复
没办法了吧,除非费个劲在路径找到合适的位置,插入'\\'
arong1234
2010-06-17
打赏
举报
回复
这种问题只有在你代码里写死了路径才会这样,驱动里得到绝对不可能有你这种问题[Quote=引用 3 楼 brookmill 的回复:]
我刚试了一下,如果是 char *path1 = "C:\Program Files\360safe\360Safebox";
从gdb里看到 path1[0]是'C',path1[1]是':',path1[2]是'P'
\360 就更杯具了,被当成了一个字符
(gdb) print path1
$1 = 0x400638 "C:Program FilesðsafeðSafebox"
……
[/Quote]
brookmill
2010-06-17
打赏
举报
回复
[Quote=引用 5 楼 mstlq 的回复:]
\P \36都被转义了。。。
[/Quote]
如果路径里刚好有\n \r \t 之类的,那就更乱了
mstlq
2010-06-17
打赏
举报
回复
[Quote=引用 3 楼 brookmill 的回复:]
我刚试了一下,如果是 char *path1 = "C:\Program Files\360safe\360Safebox";
从gdb里看到 path1[0]是'C',path1[1]是':',path1[2]是'P'
\360 就更杯具了,被当成了一个字符
(gdb) print path1
$1 = 0x400638 "C:Program FilesðsafeðSafebox"
……
[/Quote]
\P \36都被转义了。。。
hit_liuanhuaming
2010-06-17
打赏
举报
回复
驱动程序得到的路径如果会自动换行成“C:\\Program Files\\360safe\\360Safebox”的话,那么用printf打印的话应该会显示成C:\Program Files\360safe\360Safebox,而结果是“C:Program Files360safe360Safebox”,除了以上几种方法,还有别的么
brookmill
2010-06-17
打赏
举报
回复
我刚试了一下,如果是 char *path1 = "C:\Program Files\360safe\360Safebox";
从gdb里看到 path1[0]是'C',path1[1]是':',path1[2]是'P'
\360 就更杯具了,被当成了一个字符
(gdb) print path1
$1 = 0x400638 "C:Program FilesðsafeðSafebox"
如果这就是驱动程序提供的,好像就没办法了。
mstlq
2010-06-17
打赏
举报
回复
[Quote=引用楼主 hit_liuanhuaming 的回复:]
请教一个输出路径名的问题,如路径C:\Program Files\360safe\360Safebox,事先声明一下,这个路径是用驱动程序从底层得到的,不能改变,即不可以将字符'\'用'\\'代替,也不能逐次判断字符,找到'\',然后用'\\'或'/'代替,因为转义字符'\'在c语言中是得不到的,已经做过测试了,像C:\\program\360 字符长度只有12,没有'\'的3个长度,请问一下各位……
[/Quote]
驱动得到的C:\Program Files\360safe\360Safebox,会“
自动转换
”成"C:\\Program Files\\360safe\\360Safebox",这个楼主可以放心
CVA4508M
2010-06-17
打赏
举报
回复
C语言里的斜杠只有一种表达方法,就是"\\"
无论是驱动代码,还是什么代码,
具体说说你这么测试出来
C:\\program\360 字符长度只有12的
C语言
基础之
转义字符
:从原理到应用的字符编码教程 .txt
从基础到进阶,逐步讲解了
C语言
转义字符
的方法、技术和代码,以及
C语言
转义字符
的实际
输出
和效果。本资源利用多个实例,如打印文件路径、
输出
控制字符、显示特殊字符等,展示了
C语言
转义字符
的用法和作用,以及相关...
稳赢。printf()
输出
。
转义字符
。strcmp的相关内容
稳赢。printf()
输出
。
转义字符
。strcmp的相关内容
C/C++中文帮助文档
C/C++参考手册是专为
C语言
开发者制作的一个学习文档,包含了基本的介绍、预处理命令、算法、正则表达式、
转义字符
、基本数据类型等介绍,可以方便开发者快速掌握
C语言
的开发技巧,让你轻松开发出满意的软件。
c语言
转义字符
详解,
C语言
转义字符
和格式控制符参考
《
C语言
转义字符
和格式控制符参考》由会员分享,可在线阅读,更多相关《
C语言
转义字符
和格式控制符参考(5页珍藏版)》请在人人文库网上搜索。1、
C语言
转义字符
和格式控制符参考
转义字符
参考: a:蜂鸣,响铃 b:回退:...
c语言
转义字符
总结,
C语言
转义字符
总结
C语言
转义字符
总结(2011-05-31 10:28:51)标签:杂谈
C语言
转义字符
总结:
转义字符
是
C语言
中表示字符的一种特殊形式。通常使用
转义字符
表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章