为什么文件名打印不正确
Why the filename is not getting printed correctly
我正在尝试使用以下代码打印文件名及其完整路径。根据代码实现,我找到字符串每个字符的 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 -nonewline "\"
} else {
puts -nonewline [string index $f $i]
}
}
但我的输出低于:
C:\ools\cinmy.log
请告诉我如何解决这个问题?
我的问题据说与 重复,但实际上不是。在那个问题中,它在双引号内打印为字符串,但在这里我逐字符打印它
原因是你转义了反斜杠后面的字符(\
) (backslash substitution)。
您应该使用双反斜杠 (\
) 或大括号来定义文件。
综上所述,您需要将文件定义为:
set f "C:\tools\tcl\bin\my.log"
或
set f {C:\tools\tcl\bin\my.log}
我正在尝试使用以下代码打印文件名及其完整路径。根据代码实现,我找到字符串每个字符的 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 -nonewline "\"
} else {
puts -nonewline [string index $f $i]
}
}
但我的输出低于:
C:\ools\cinmy.log
请告诉我如何解决这个问题?
我的问题据说与
原因是你转义了反斜杠后面的字符(\
) (backslash substitution)。
您应该使用双反斜杠 (\
) 或大括号来定义文件。
综上所述,您需要将文件定义为:
set f "C:\tools\tcl\bin\my.log"
或
set f {C:\tools\tcl\bin\my.log}