社区
C语言
帖子详情
c语言转义字符的输出
hit_liuanhuaming
2010-06-17 09:11:23
请教一个输出路径名的问题,如路径C:\Program Files\360safe\360Safebox,事先声明一下,这个路径是用驱动程序从底层得到的,不能改变,即不可以将字符'\'用'\\'代替,也不能逐次判断字符,找到'\',然后用'\\'或'/'代替,因为转义字符'\'在c语言中是得不到的,已经做过测试了,像C:\\program\360 字符长度只有12,没有'\'的3个长度,请问一下各位高手,怎么能用printf打印出该路径……等等等
...全文
734
17
打赏
收藏
c语言转义字符的输出
请教一个输出路径名的问题,如路径C:\Program Files\360safe\360Safebox,事先声明一下,这个路径是用驱动程序从底层得到的,不能改变,即不可以将字符'\'用'\\'代替,也不能逐次判断字符,找到'\',然后用'\\'或'/'代替,因为转义字符'\'在c语言中是得不到的,已经做过测试了,像C:\\program\360 字符长度只有12,没有'\'的3个长度,请问一下各位高手,怎么能用printf打印出该路径……等等等
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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语言
转义字符
大全
C语言
转义字符
大全
C语言
转义字符
和格式控制符参考
C语言
转义字符
和格式控制符参考,
C语言
转义字符
很全
尹成Python27天入门到项目实战
字符串高级简单回顾..eval与exec简介字符串的简单规范字符串的截取字符串赋值规范字符串
转义字符
字符串常见运算符字符串格式化字符串格式化强化字符串编码简介dir与help查看str字符串函数第一个大写以及字符串居中...
C语言
常用
转义字符
表
C语言
常用
转义字符
表
C语言
常用
转义字符
表
C语言
基础之
转义字符
:从原理到应用的字符编码教程 .txt
本资源系统地介绍了
C语言
转义字符
的原理和应用,包括
转义字符
的概念、分类、表示、作用等内容,以及如何用
转义字符
表示ASCII码、控制字符、特殊字符等。本资源适合
C语言
基础学习者和考生使用,帮助他们深入理解和掌握
C语言
转义字符
的原理和应用,提高
C语言
的能力和水平。 提供了多种字符编码和转换的功能,如输入和
输出
字符的实体、ASCII码、八进制
转义字符
、十六进制
转义字符
等,以及支持多个字符的批量转换和显示。本资源适合
C语言
编码和转换的学习者和工程师使用,帮助他们通过Web界面来进行
C语言
转义字符
的编码和转换,提高字符的知识和水平 从基础到进阶,逐步讲解了
C语言
转义字符
的方法、技术和代码,以及
C语言
转义字符
的实际
输出
和效果。本资源利用多个实例,如打印文件路径、
输出
控制字符、显示特殊字符等,展示了
C语言
转义字符
的用法和作用,以及相关的概念和知识,如ASCII码、字符集、字符串等。本资源适合
C语言
教学和学习的教师和学生使用,帮助他们通过视频和代码来观看和学习
C语言
转义字符
的教学和
输出
,提高编程的兴趣和能力。 从基础到进阶,逐步讲解了
C语言
转义字符
的方法、技术和代码,以及
C语言
转义字符
的实际
输出
和效果
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章