C语言打开一个电脑中的文件,文件指针显示是错误的指针,这是为什么
FILE *fp1;
printf("请输入要打开的文件的位置:");
    gets(file1);
    if((fp1=fopen(file1,"r"))==NULL)
    {
        printf("Can't open this file!\n");
        exit(0);
    }

对话框中显示为 请输入要打开的文件的位置:D:\a.docx

此时逐语句调试时,局部变量fp1的值显示为+ fp1 0x5e3d1448 {_ptr=0x00000000 <错误的指针> _cnt=0 _base=0x00000000 <错误的指针> ...} _iobuf *

然后程序就出现了错误,求问这是为什么?

5个回答

gets(file1);
这里的file1在哪里定义的,有没有分配?还是只定义了指针?

你为什么要自己输入路径呢?你试试char *pchDir = “D:\a.docx”;

qq_27564553
CrawlWu char *pchDir = “D:\\a.docx”昨天打错了
接近 4 年之前 回复

字符串转义字符 要用双斜杠吧!

Windows上路径要用/或者\为间隔

我的问题也是这样

#include
#include

int main()

{

const char *filename = "F://test.txt";

FILE *fp = fopen (filename,"r");

if(fp == NULL)

{

printf("failed to open file!\n");
system("pause");

return -1;

}

老打开失败,单步调试就说- stream 0x013820f4 string "F://test.txt" {_ptr=0x2f2f3a46 <错误的指针> _cnt=1953719668 _base=0x7478742e <错误的指针> ...} _iobuf *等等各种错误的指针。

已被这个问题弄崩溃。在别的电脑上运行又是可以打开文件的。这是什么原因,电脑上缺少什么东西吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问