【问题标题】:handle filename with spaces in C在 C 中处理带空格的文件名
【发布时间】:2012-09-26 07:47:17
【问题描述】:

我正在开发一个简单的 CLI 程序,它允许 2 个或多个用户(在同一个 LAN 中或通过 Internet)共享他们的文件。

它是如何工作的:

  1. 打开终端
  2. 运行程序
  3. 拖放一个或多个文件

我的问题是:如何让程序读取名称中有空格的文件?

因为如果用户拖动一个文件没有问题(strtok 直到\n)但是如果用户拖动到终端超过 1 个文件我有一个问题因为我不能使用@ 987654322@ 如果文件名有空格。

例子:

Files to share: /home/$USER/tryme /home/$USER/try me with space /home/$USER/file_ok

我能做什么?

【问题讨论】:

  • 我认为您需要在路径中添加引号。
  • 如果我使用 GNOME 终端,路径会被引用,但如果我使用 KDE 终端,则没有引号:(
  • 那么我想你有三个选择,写一个gui来添加文件;手动添加引号或按照 alex 下面所说的操作,在空格前添加 \ 而不是文件周围的引号。
  • 天哪 :( 我想我会写一个 GUI...

标签: c filenames


【解决方案1】:

如果文件名有空格,那么它应该在每个空格之前都有一个\ 来转义它们,否则它们应该是多个文件。

【讨论】:

    【解决方案2】:

    您不能将文件拖放到终端中,因为它采用“原样”路径,因此您需要在将路径字符串加载到程序中后对其进行修改,或者只是制作一个小界面(使用 gtk例如),它会更容易。

    【讨论】:

    • 哈哈是的,但这是一个例子,只是没有任何接口库
    • 用C除了GTK我没有太多选择:(
    • 只要做一个简单的拖放系统,我会比拖放终端系统更好。如果终端软件不使用拖放功能?你写路径吗? X) 去做吧。
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2011-06-27
    • 2019-07-16
    • 2013-12-17
    • 1970-01-01
    • 2016-06-07
    • 2012-04-07
    相关资源
    最近更新 更多