由于长路径导致的打开错误,不存在这样的文件

问题描述 投票:0回答:1

我想知道fopen是否由于长路径而失败,或者文件不存在

#include<stdio.h>
#include <errno.h>
extern int errno ;
int main(){
FILE *p;
int errnum;
p=fopen("C:\\Users\\kkm\\testtttttttttttttttttttttttttttttttttttttt\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\b.txt","w");
//p=fopen("C:\\Users\\kkm\\testtttttttttttttttttttttttttttttttttttttt\\xxxx.txt","r");
if (p == NULL) {

      errnum = errno;
      fprintf(stderr, "Value of errno: %d\n", errno);
      perror("Error printed by perror");
      fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
   } else {

      fclose (p);
   }
return 0;
}

第一个fopen的路径很长,而第二个fopen的路径很短,但是文件不存在。对于这两种情况,输出都是相似的:

Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

有没有办法知道区别?

c++ c error-handling fopen file-handling
1个回答
0
投票

使用extended-length-path语法调用例程;为路径加上\\?\前缀。在您的情况下,将是

p=fopen("\\\\?\\C:\\Users\\kkm\\testtttttttttttttttttttttttttttttttttttttt\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\\ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\\b.txt","w");
© www.soinside.com 2019 - 2024. All rights reserved.