代码之家  ›  专栏  ›  技术社区  ›  Gabriel Lucizano

为什么我无法访问C中的文件

  •  1
  • Gabriel Lucizano  · 技术社区  · 2 年前

    我试图访问一个文件,但在访问目录时遇到问题。 我的窗户是葡萄牙语的,所以 Área de Trabalho 方法 Desktop

    #include <stdio.h>
    
    int main() {
    
        FILE *file;
        file = fopen("C://Users//gluci//OneDrive//Área de Trabalho//Automatos//teste.txt", "w");
        fprintf(file, "abcde");
        fclose(file);
        return 0;
    }
    

    我试过使用 / , \ , // , \\ 但似乎什么都不起作用。当我没有传递特定的目录时,程序会正常工作。

    2 回复  |  直到 2 年前
        1
  •  1
  •   chqrlie    2 年前

    路径名可以使用 \ / 作为Windows API调用中的分隔符。当然 \ 必须编码为 \\ 在C字符串中,您尝试过,但不应该使用 //

    该问题可能与源文件中使用的非ASCII字母文件名的编码有关 Á Windows默认情况下不支持UTF-8编码的文件名,因此如果编辑器编码 C:/Users/gluci/OneDrive/Área de Trabalho/Automatos/teste.txt 如果使用UTF-8,这可能会导致问题。

    你可以试着不带口音: "C:/Users/gluci/OneDrive/Area de Trabalho/Automatos/teste.txt"

    您也可以尝试使用该目录的英文名称: C:/Users/gluci/OneDrive/Desktop/Automatos/teste.txt"

    如果这些都不起作用,请创建目录的快捷方式 Área de Trabalho 只使用ASCII字母,并在路径名中使用。

    还要记住,您可能没有对目标目录的写访问权限,完整路径也可能不正确。

        2
  •  0
  •   DrC    2 年前

    对于Windows,您想要一个类似“C:\Users\gluci…”的字符串,但要在类似C的语言中将其作为字符串输入,您必须使用“C:\\Users\\gluci \\…”,其中第一个反斜杠转义每对中的第二个。