1

我在 d: 驱动器中创建了一个名为 abc 的文本文件。我无法打开它。请告诉我该怎么做。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
    FILE *fp;
    clrscr();
    fp = fopen("D:/abc.txt","r");
    if(fp == NULL)
    {
        printf("\nCannot open");
        getch();
        exit(1);
    }
    fclose(fp);
    getch();
}
4

6 回答 6

5

你有错别字,试试

 fp = fopen("D:\\abc.txt","r");

反而。

或者,如果文件与程序位于同一文件夹中:

 fp = fopen("abc.txt","r");
于 2013-02-27T13:44:04.963 回答
4

更正路径,它应该是“D:\\abc.txt"

于 2013-02-27T13:44:20.067 回答
3

你的文件路径看起来有点奇怪。将其更改为

fp = fopen("D:\\abc.txt","r");

这可能会奏效。

除此之外,包括<errno.h>并检查它,如果它失败了。

于 2013-02-27T13:44:53.123 回答
2
fp = fopen("D:/abc.txt","r");

应该

fp = fopen("D:\\abc.txt","r");

在路径中使用\,而不是/在 Windows 中使用,额外\用于转义序列。

编辑

正如您向其他人评论的那样,这些答案fp = fopen("D:\\abc.txt","r");也不起作用,然后检查名称实际上是什么。您可能会错误地给出错误的名称,请检查您是否有这样的错误。

(1) 打开命令提示符
(2) 使用 DIR 命令打印文件名:

c:\Users\name> D:
D:\> DIR
 Volume in drive D is FUN BOX
 Volume Serial Number is B48A-3CE7

 Directory of d:\

 27-02-2013  19:23                 0 abc.txt.txt
 26-02-2013  22:05    <DIR>          BOLLYWOOD MOVIES
 27-02-2013  19:31                 0 x
           2 File(s)              0 bytes
           1 Dir(s)  11,138,654,208 bytes free

文件名是abc.txt.txt,但是当你在文件夹扩展名中看到这个时,文件名看起来abc.txt

我是 Linux 用户,我通常在 Windows 中犯这个错误。这就是为什么。可能对你有帮助!

于 2013-02-27T13:44:37.273 回答
2

如果您使用的是 TurboC,请将该文件放在 TC 的 BIN 目录中。并将路径指定为fp = fopen("abc.txt","r"); 而不是任何其他替代路径。

于 2013-02-27T15:37:08.967 回答
1

下一次,尝试使用 perror() 函数使错误更具体。Perror() 将解释错误代码,这将帮助您减少浪费时间,尝试查找错误类型。

将此添加到您的代码中...

if(fp == NULL)
{
perror(fp);
}

运行时我收到错误消息

没有相应的文件和目录。(因为我运行了程序,并试图读取一个文件,而不是先创建它)

看,如果这是同样的问题,在你的情况下

于 2013-02-27T14:10:38.607 回答