当前位置: 技术问答>linux和unix
请教:if(stream=fopen("test","r")==(FILE*)0) 这句话是什么意思?谢谢!
来源: 互联网 发布时间:2015-12-02
本文导语: 请教: #include "stdio.h" main() { char key; FILE *stream; /*流的指针*/ printf("please input a letter n"); key=getchar(); /*读入一个字符*/ if(stream=fopen("test","r")==(FILE*)0) /*将流与一个文件联系...
请教:
#include "stdio.h"
main()
{
char key;
FILE *stream; /*流的指针*/
printf("please input a letter n");
key=getchar(); /*读入一个字符*/
if(stream=fopen("test","r")==(FILE*)0) /*将流与一个文件联系起来*/
{
//判断是否成功
fprintf(stderr,"Error opening file.n");
exit(1);
}
}
请教:
if(stream=fopen("test","r")==(FILE*)0)
这句话是什么意思?
还有 (FILE*)0) 是什么意思?
谢谢!
#include "stdio.h"
main()
{
char key;
FILE *stream; /*流的指针*/
printf("please input a letter n");
key=getchar(); /*读入一个字符*/
if(stream=fopen("test","r")==(FILE*)0) /*将流与一个文件联系起来*/
{
//判断是否成功
fprintf(stderr,"Error opening file.n");
exit(1);
}
}
请教:
if(stream=fopen("test","r")==(FILE*)0)
这句话是什么意思?
还有 (FILE*)0) 是什么意思?
谢谢!
|
FILE是一个在中已经定义好的结构类型。包含了一个文件的信息结构,比如什么什么的。。。
fopen这个函数返回类型是一个指向FILE结构的指针,即FILE*。
我觉得你那个声明FILE* stream误导了你,这并不是什么流,别和C++混了~如果你声明成FILE* file
可能就不会误解。
(FILE*)0是一个类型转换,强制把"=="左右两边的类型都转化成FILE*类型的,其实(FILE*)0这种写法好像
不多见,应该NULL通用(NULL就是0,可以看成(*)0,经常和指针作运算)。
还有,"=="的优先级高于"=",你这句if(stream=fopen("test","r")==(FILE*)0)里面不加括号等价于
if(stream=(fopen("test","r")==NULL)),那么stream的值就应该是fopen("test","r")==NULL得到的结果,
即非0或0,然后再赋值给stream,最后就变成if(stream)了。估计你的本意不是这样的,所以要记得加括号
if((stream = fopen("test","r")) == NULL),应该是这样吧~
不知说的对不对,其实我也是个初学者~:)
fopen这个函数返回类型是一个指向FILE结构的指针,即FILE*。
我觉得你那个声明FILE* stream误导了你,这并不是什么流,别和C++混了~如果你声明成FILE* file
可能就不会误解。
(FILE*)0是一个类型转换,强制把"=="左右两边的类型都转化成FILE*类型的,其实(FILE*)0这种写法好像
不多见,应该NULL通用(NULL就是0,可以看成(*)0,经常和指针作运算)。
还有,"=="的优先级高于"=",你这句if(stream=fopen("test","r")==(FILE*)0)里面不加括号等价于
if(stream=(fopen("test","r")==NULL)),那么stream的值就应该是fopen("test","r")==NULL得到的结果,
即非0或0,然后再赋值给stream,最后就变成if(stream)了。估计你的本意不是这样的,所以要记得加括号
if((stream = fopen("test","r")) == NULL),应该是这样吧~
不知说的对不对,其实我也是个初学者~:)
|
test 文件必须和可执行文件在同一个目录下
是吗?
不是,是你当前目录
是吗?
不是,是你当前目录
|
似乎又有Unicode字符了
|
if(stream=fopen("test","r")==(FILE*)0)
就是
if(stream=fopen("test","r")==NULL)
就是
if(stream=fopen("test","r")==NULL)