C语言fopen函数无法打开文件 我在C盘下新建了一个test.txt,输入文件名的时候输入C:\test.txt就不好使

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
int ch;
FILE *fp;
long count = 0;
char name[41];
printf("input the file's name:");
scanf("%s",name);
if ( (fp = fopen(name,"r")) == NULL)
{
printf ("Can't open %s\n", name);
exit(1);
}
while ((ch = getc(fp)) != EOF)
{
putc(ch,stdout);
count++;
}
fclose(fp);
printf ("\nFile %s has %ld characters\n",name,count);
return 0;
}
我把文件放在和可执行文件相同的目录下,输入文件名也不好使

if ( (fp = fopen(name,"r")) == NULL)
r 以只读方式打开文件,该文件必须存在。
改成:
if ( (fp = fopen(name,"wt+")) == NULL)追问

可是我新建了,不就是已经存在了吗,用"r"应该好使啊

追答

那应该就可以啊,我这就可以,看看截图,你的提示信息是什么?

那应该就可以啊,我这就可以,看看截图,你的提示信息是什么?

追问

我刚才试了一下用wt+创建了一个test.txt,然后把wt+改为r+就可以找到了,但是一上来就用r+就不好使,这是什么原因呢?

追答

这个就不太清楚了,不知道和你的系统有没有关系
你可以重新再建个工程,再来一把试试
直接用r看看这次行不行

追问

还是不行啊呵呵,不知道什么原因,wt+是在内存中创建吧,但是test.txt存在硬盘上,用"r"访问可以吗

追答

r 以只读方式打开文件,该文件必须存在。
  r+ 以可读写方式打开文件,该文件必须存在。
  rb+ 读写打开一个二进制文件,只允许读写数据。
  rt+ 读写打开一个文本文件,允许读和写。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

应该不是这个原因吧,你检查一下你在C盘的test.txt文件,是不是文件设置的问题,我的感觉,好像不是程序的问题,要不你换到D或E盘试试

r 以只读方式打开文件,该文件必须存在。
  r+ 以可读写方式打开文件,该文件必须存在。
  rb+ 读写打开一个二进制文件,只允许读写数据。
  rt+ 读写打开一个文本文件,允许读和写。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

应该不是这个原因吧,你检查一下你在C盘的test.txt文件,是不是文件设置的问题,我的感觉,好像不是程序的问题,要不你换到D或E盘试试

追问

还是不好使哈,造成这种情况的原因都有哪些呢?

追答

个人的想法啊,ha
可能是文件设置不能读取或者系统设置了一些权限吧
在那个test.txt中输入一些字符试试,看看能不能读出来
实在不行就换个机器试试,如果可以了那就肯定不是程序的原因了,还要定位一下才知道具体原因~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-04

你的程序没错,测试可用

追问

恩 我知道为什么了 我的不是txt是vhd

第2个回答  2011-09-04
C:\test.txt改成C:\\test.txt试试吧追问

试过了 还是不好使啊

追答

你是用只读的方式打开的,前提是必须有test.txt这一文件在
楼下的方式不适合这段代码,打开的同时文件内容也进行了重写,如果想添加内容可将r换成a+进行追加

相似回答