【发布时间】:2017-09-15 09:11:36
【问题描述】:
我对 C 中的 fopen() 函数有一些问题。
我是解析目录并将所有路径放入 char 数组(char**)。之后我应该打开所有这些文件。和... fopen 对某些文件返回“没有这样的文件或目录”。我真的不明白,为什么。
- 所有路径都是正确的。我查过了。
- 我拥有所有权限 打开这些文件。
- 如果我从错误日志复制文件路径并尝试 通过我的程序只打开这个文件 - 它可以工作。
- 其他 程序不适用于这些文件(我认为)。
我能做错什么?
int main(int argc, char *argv[]){
char** set = malloc(10000*sizeof(char*));
char* path = argv[1];
listdir(path, set); /* Just parse directory. Paths from the root. No problem in this function. all paths in the variable "set" are right */
int i=0;
while(i<files){ /* files is number of paths */
FILE* file = fopen(set[i++],"rb");
fseek(file, 0L, SEEK_END);
int fileSize = ftell(file);
rewind(file);
/*reading bytes from file to some buffer and close current file */
i++;
}
}
【问题讨论】:
-
你做错的是你没有提供minimal reproducible example
-
请出示您的代码。
-
调试器。打破 fopen()。逐字节检查 set[] 数组。如果这很尴尬,则 strcpy() 将数组元素转换为本地 char 数组(例如文件路径 [256]),然后检查它。找出路径不正确的原因并修复它。
-
所有路径都是正确的。我查过了。 那么,一个可能被数亿人(如果不是更多人)使用的操作系统是错的吗?您没有发布的唯一代码和示例是否正确?
-
@tFNiYaFF - 相同吗?没有多余的不可打印的字符?没有隐藏的CR,LF?只是 NUL 终止符紧随其后的绝对路径?