我如何将字符串写入方案中没有引号的文件

how do i write a string to a file without quote marks in scheme

我正在尝试将一个字符串写入一个文件,但每次我这样做时它都有引号。

我试过了

(call-with-output-file file-path
  (lambda(output-port)(write "some text" output-port)))

(let ((p (open-output-file file-path)))
      (write "some text" p)
      (close-output-port p))

但在这两种情况下我都期望 "some text" 但得到 "\"some text\""

我目前在 chicken-scheme 工作,但我认为这不重要。

write 用于将 S 表达式序列化到文件中。它与 read 相反,它将序列化的 S 表达式读回列表、符号、字符串等。这意味着 write 将像在源代码中一样输出所有内容。

如果你只想输出一个字符串到一个端口,使用display:

(call-with-output-file file-path
  (lambda(output-port)
    (display "some text" output-port)))

或者在 CHICKEN 中,您可以使用 printffprintf:

(call-with-output-file file-path
  (lambda(output-port)
    (fprintf output-port 
             "Printing as s-expression: ~S, as plain string: ~A"
             "some text"
             "some other test")))

这会将以下内容打印到文件中:

Printing as s-expression: "some text", as plain string: some other text