C为什么文件指针打不开文件名
A. C语言文件为什么老提示无法打开啊!谁能告诉下谢谢!
C语言代码文件有2中格式:
头文件 .h
源文件 .c
如果提示无法打开,就说明你没有装开发工具,比如 vitrual stdio系列的IDE.
实际上.h .c文件格式的,使用记事本就可以打开的.
B. C语言 如何通过文件指针获得文件名
在tc20中,一旦你成功打开一个文件,他将返回一个文件指针。
FILE*fp;
fp=fopen("abc.dat",文件状态(如w,r,r+));
当上面的操作成功后文件指针fp就会赋予你打开文件的最基本信息!
FILE结构在TurboC在stdio.h文件中有以下的文件类型声明:
typedefstruct
{
shortlevel;/*缓冲区“满”或“空”的程度*/
unsignedflags;/*文件状态标志*/
charfd;/*文件描述符(句柄)*/
unsignedcharhold;/*如无缓冲区不读取字符*/
shortbsize;/*缓冲区的大小*/
unsignedchar*buffer;/*数据缓冲区的位置*/
unsignedar*curp;/*指针,当前的指向*/
unsignedistemp;/*临时文件,指示器*/
shorttoken;/*用于有效性检查*/
}FILE;
为管理你打开的文件,操作系统为所有的文件创建一个打开文件信息的结构数组---文件控制块(FCB),而文件描述符就承担了访问与之对应的文件控制块的使命,他在c中就充当文件句柄。每一个文件都需要唯一的一个标识,这样才能管理若干个文件
FCB他存贮这你所有打开文件的信息,而只有通过文件句柄才能访问与之对应的FCB,从而访问你的文件.
文件句柄,就是FCB结构数组的下标
所以,通过文件指针获得文件名的操作路线:
FILE*fp;
charfd=fp->fd;
FCB*fcb;
char*filiname=fcb[fd].filiname
利用FCB(文件控制块)操作的例子见:
http://www.asme.net/blog/user/postcontent.jsp?neighborId=8747&kindLevel=1&kindId=24655&postId=40710&readSg=1
C. C语言是否可以通过文件指针得到文件名
可以通过指针访问文件,但是不可以反过来获取文件名
D. 为什么我编写程序,在文件中打不开,是可以执行的,文件后缀是.c
源程序扩展名: .c
目标程序扩展名: .obj
可执行程序扩展名: .exe
查看这些文件的扩展名,可以通过在C编译环境中新建一个完整的工程,输入程序完成编译与连接后就可以得到以上那些文件,在工程文件中可以查看。
E. C中文件打不开是怎么回事
说明要么是不存在这个文件
要么是你的文件的路径不对,我给你个例子看看
#include<iostream>
usingnamespacestd;
voidcreat()//创建文件并且输入信息
{
inttel;
charname[20],add[20];
//charname[10];
FILE*fp;
cout<<"请输入要创建的文件的名称 ";
cin>>name;
if((fp=fopen(name,"a+"))==NULL)
{
cout<<"cannotopenthisfile ";
exit(0);
}
fprintf(fp,"%-10s%-20s%-50s ","姓名","电话号码","住址");
cout<<"请依次输入姓名、电话号码、住址(以0结束) ";
cin>>name;
while(strcmp(name,"0"))
{
cin>>tel>>add;
fprintf(fp,"%-10s%-20d%-50s ",name,tel,add);
cin>>name;
}
fclose(fp);
}
voidoutput()//输出文件的内容
{
FILE*fp;
chartel[20];
charname[20],add[20];
cout<<"请输入要输出的文件的名称 ";
cin>>name;
if((fp=fopen(name,"r"))==NULL)
{
cout<<"cannotopenthisfile ";
exit(0);
}
cout<<" 通讯录 ";
while(!feof(fp))
{
fscanf(fp,"%s%s%s ",name,tel,add);
printf("%-10s%-20s%-50s ",name,tel,add);
}
fclose(fp);
}
voidmain()
{
creat();
output();
}
F. C语言 打开文件中文名长 就打不开
这样的情况多半是系统编码的问题,是gb编码和unicode编码的不兼容导致的问题
G. C语言fopen打不开文件
①文件不存在;
②文件名错误,打开文件的名字应该写成"c:\\file.txt",而不是"c:\file.txt";
③代码错误;
fopen函数用于打开文件并获取文件的指针,以便对文件进行操作。
函数原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
参数:path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r
以只读方式打开文件,该文件必须存在。
r+
以可读写方式打开文件,该文件必须存在。
rb+
读写打开一个二进制文件,允许读写数据,文件必须存在。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
返回值:
文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
示例:以只读方式打开文件
#include<stdio.h>
#define
F_PATH
"d:\\myfile\\file.dat"
int
main(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return
-1;//要返回错误代码
}
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return
0;
}
H. 【c语言】为什么这个c程序有的时候打不开文件
加密函数和解密函数都小有改变,已经可以工作了。
I. C语言,为什么运行结果为打不开文件
说明文件不存在。
检查一下目录下面是不是有eng.txt这个文件
确定你认为的程序目录是真正的程序目录(通过打印argv[0])