如何在 C 中打开以 file:// 开头的文件?

How to fopen a file beginning with file:// in C?

我一直在用 C 语言开发一个库,它使用 fopen 打开和读取文件。在某些情况下,传入以file://开头的文件路径(例如file:///Users/<username>/Desktop/doc.txt),即使它是机器上的有效文件,但fopen无法打开文件。

除了 fopen 之外,我还应该使用其他功能吗?如果没有,我应该如何编辑文件路径才能正确打开?

(要清楚,在没有 file:// 的情况下传入的相同路径可以正常打开)

file:///Users/<username>/Desktop/doc.txt 不是文件的路径名。这是一个URL。要打开这种特定类型的 URL,您需要了解 URL 方案的逻辑以及如何从中提取本地文件系统中的路径名,以将其传递给 fopen 或类似的.

您只需要检查路径是否以“file://”开头,如果是,则传入从下一个字符开始的字符串。

const char *prefix = "file://";
if (!strncmp(filename, prefix, strlen(prefix))) {
    fp = fopen(filename + strlen(prefix), "r");
} else {
    fp = fopen(filename, "r");
}
file:///Users/<username>/Desktop/doc.txt

这会产生错误,因为它不是您驱动器中的路径。

file:/// is the interface that provides information about files and allows JavaScript in a web page to access its content.

如果你想使用这个 file:///Users//Desktop/doc.txt 路径,那么你必须从路径中提取 file:// 然后打开特定的文件路径。