【发布时间】:2020-04-01 19:50:57
【问题描述】:
我已经有一段时间没有用 C 编程了,但我以前从未见过这种行为。似乎当我使用fopen(filename, "w"); 打开文件时,由于某种原因,文件被保存为'filename'$'\n'。例如,如果文件名存储“c.txt”,则一旦程序运行,ls 将显示'c.txt'$'\n'。
我正在使用 fgets 来检索用户输入,但我已经验证了文件名中的输入在打印语句中是正确的。
我也找不到任何关于此的搜索结果,但我尝试编写一个简单的 Python 程序来创建一个文件,它没有问题。
有谁知道这种奇怪的行为是从哪里来的?
【问题讨论】:
-
这可能意味着您使用
fgets()或getline()读取文件名并忘记删除尾随换行符。使用:filename[strcspn(filename, "\n\r")] = '\0';如果存在换行符,则安全地删除换行符,如果不存在则用 null 覆盖 null。\r适应 Windows 行尾(如果它们出现)。 -
感谢@JonathanLeffler!成功了!
标签: c