Tcl 文件名打印不正确的原因
我试图用下面的代码打印一个文件名及其完整路径。根据代码实现,我找到字符串中每个字符的ASCII值,并检查其ASCII值是否为“\”(反斜杠)字符的ASCII值,然后相应地打印:Tcl 文件名打印不正确的原因,tcl,Tcl,我试图用下面的代码打印一个文件名及其完整路径。根据代码实现,我找到字符串中每个字符的ASCII值,并检查其ASCII值是否为“\”(反斜杠)字符的ASCII值,然后相应地打印: set f "C:\tools\tcl\bin\my.log" for {set i 0} {$i < [string length $f]} {incr i} { set c [scan [string index $f $i] %c] if { $c == 9 } { puts -no
set f "C:\tools\tcl\bin\my.log"
for {set i 0} {$i < [string length $f]} {incr i} {
set c [scan [string index $f $i] %c]
if { $c == 9 } {
puts -nonewline "\\"
} else {
puts -nonewline [string index $f $i]
}
}
请让我知道如何修复相同的问题
我的问题据说是重复的,但实际上不是。在这个问题中,它是以双引号内的字符串形式打印的,但在这里,我是逐字符打印的,原因是您正在对反斜杠(
\
)后面的字符进行转义()。
您应该使用双反斜杠(\\
)或大括号来定义文件
总之,您需要将文件定义为:
set f“C:\\tools\\tcl\\bin\\my.log”
或
set f{C:\tools\tcl\bin\my.log}
原因是您正在对反斜杠(\
)后面的字符进行转义()。
您应该使用双反斜杠(\\
)或大括号来定义文件
总之,您需要将文件定义为:
set f“C:\\tools\\tcl\\bin\\my.log”
或
set f{C:\tools\tcl\bin\my.log}
我的问题不是该问题中另一个问题的重复,它是以双引号内的字符串形式打印的,但我在这里一个字符一个字符地打印它似乎很相关:在代码中,当遇到9
时,用\
替换它。。。。但是9
是制表符的ascii码。你注意到没有显示\b
或\m
?这完全是该问题的重复;如果在文件名中使用反斜杠,请将其放在大括号中,否则字符串将被损坏。(例如,\b
变成了退格字符,这就是为什么cl\bin
的l
似乎不见了。)我的问题不是该问题中另一个问题的重复,它是以双引号内的字符串形式打印的,但我在这里逐字打印它似乎很相关:在你的代码中,当你遇到一个9
时,你用一个\
替换它。。。。但是9
是制表符的ascii码。你注意到没有显示\b
或\m
?这完全是该问题的重复;如果在文件名中使用反斜杠,请将其放在大括号中,否则字符串将被损坏。(\b
成为退格字符,例如,这就是为什么cl\bin
的l
似乎丢失的原因。)
C:\ools\cinmy.log