提问人:Gabriel Lucizano 提问时间:11/5/2023 最后编辑:chqrlieGabriel Lucizano 更新时间:11/5/2023 访问量:94
为什么我无法访问 C 中的文件
Why I can't access files in C
问:
我正在尝试访问文件,但在访问目录时遇到问题。
我的窗户是葡萄牙语的,所以意味着.Á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;
}
我试过使用 、、 ,但似乎没有任何效果。当我不传递特定目录时,程序正常工作。/
\
//
\\
答:
0赞
DrC
11/5/2023
#1
对于 Windows,您需要一个类似于“C:\Users\gluci...” 的字符串。但是要在类 C 语言中将其输入为字符串,您必须使用“C:\\Users\\gluci\\...”其中,每对中的第一个反斜杠转义第二个反斜杠。
评论
6赞
Ted Lyngmo
11/5/2023
正斜杠也适用于 Windows
0赞
DrC
11/5/2023
我知道,但试图保持问题的味道
0赞
Gabriel Lucizano
11/5/2023
即使有 2 个反斜杠,程序仍然不会创建文件
2赞
chqrlie
11/5/2023
#2
路径名可以在 Windows API 调用中使用 或 作为分隔符。当然,必须按照 C 字符串进行编码,您尝试过,但您不应该使用 .\
/
\
\\
//
该问题可能与源文件中使用的非 ASCII 字母文件名的编码有关。默认情况下,Windows 不支持 UTF-8 编码的文件名,因此,如果编辑器使用 UTF-8 编码,则可能会导致问题。Á
C:/Users/gluci/OneDrive/Área de Trabalho/Automatos/teste.txt
您可以尝试不带口音:"C:/Users/gluci/OneDrive/Area de Trabalho/Automatos/teste.txt"
您也可以尝试使用目录的英文名称:C:/Users/gluci/OneDrive/Desktop/Automatos/teste.txt"
如果这些都不起作用,请仅使用 ASCII 字母创建目录的快捷方式,并在路径名中使用该快捷方式。Área de Trabalho
另请记住,您可能没有对目标目录的写入权限,并且完整路径也可能不正确。
评论
//
/
'\\'
'/'
perror("");
fopen