C 无法打开d:驱动器中的文件

C 无法打开d:驱动器中的文件,c,windows,file-handling,C,Windows,File Handling,如何读取和写入不在bin目录中的文件,即不在C驱动器中的文件。 我写了这段代码 fs=fopen("d:/source.txt","w"); if(fs==NULL) { puts("Unable to open file"); } 并且输出“无法打开文件”。谁能帮帮我吗 FILE *fs= fopen("d:/source.txt","w"); if(fs==NULL) { printf("can't open"); } if (fs!=NULL) { fputs

如何读取和写入不在bin目录中的文件,即不在C驱动器中的文件。
我写了这段代码

fs=fopen("d:/source.txt","w");
if(fs==NULL)
{
      puts("Unable to open file");
}
并且输出“无法打开文件”。谁能帮帮我吗

FILE *fs= fopen("d:/source.txt","w");
if(fs==NULL)
{
  printf("can't open"); 
}
if (fs!=NULL)
{
    fputs ("Opened successfully",fs);
    fclose (fs);
}

确保source.txt文件存在并且不是只读文件。我尝试了上面的代码,但没有收到任何错误。

有几个可能的原因导致无法通过打开文件

要获取错误详细信息,请打印和/或致电和/或类似信息,例如:

#include <stdio.h>
#include <string.h>
#include <errno.h>

int main(void)
{
  char filename[] = "d:/source.txt";
  FILE * fs = fopen(filename,"w");
  if (NULL == fs)
  {
    perror("fopen() failed");
    fprintf(stderr, "Error #%d occurred when trying to open file '%s': %s.\n", 
      errno, 
      filename,
      strerror(errno));
  }

  ... 

  return 0;
}
#包括
#包括
#包括
内部主(空)
{
char filename[]=“d:/source.txt”;
FILE*fs=fopen(文件名,“w”);
if(NULL==fs)
{
perror(“fopen()失败”);
fprintf(stderr,“尝试打开文件“%s”时发生错误#%d:%s。\n”,
呃,不,
文件名,
斯特雷罗(埃尔诺));
}
... 
返回0;
}

改用它来打印错误,它会更明确地告诉您出了什么问题。我认为您的斜杠是反斜杠。如果将/替换为\\(以便转义),会发生什么情况?“C驱动器”表示这是一台Windows计算机。在Windows中,所有路径都使用反斜杠写入。但是,由于C字符串中的反斜杠有特殊的含义,因此必须编写
\`才能获得反斜杠。因此路径字符串应该是
d:\\source.txt`.@Lundin,但是Windows CRT不允许两个斜杠都作为路径分隔符吗?事实上,Windows似乎一直支持将前斜杠作为分隔符。例如,尝试在命令窗口中执行例如
dir“c:/some/path”
(注意引号中的字符),您将看到它工作正常。问题可能是您没有对`D:`的写访问权限,这就是它失败的原因。但这只是一个猜测。您确实需要检查实际的错误。