C: 如何将 %20 转换为空格?

C: How do I convert %20 to spaces?

我 运行 在编写 GNU Coreutils shred 程序的图形前端时跨越了这个程序。当用户拖入其中包含 space 的文件时,例如 my private data.docx,GTK+ DND 服务将这些 space 表示为 %20。使用那个例子我会得到(文件名)my%20private&20data.docx。我需要将它们转换为 space 个字符,因为我使用 stdio.h 中的 fopen 函数。 fopen 拒绝打开这样的文件名,因为它无法将 %20 识别为 space.

的表示

不,您没有用空格替换 %20。您将 URL 解码为文件名,使用 g_filename_from_uri:

gchar *
g_filename_from_uri (const gchar *uri,
                     gchar **hostname,
                     GError **error);

因此用法

gchar *filename = g_filename_from_uri(uri, NULL, NULL);

最简单的。