| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:FILE * 只能定义在main函数里吗
只看楼主 加入收藏
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:3 
FILE * 只能定义在main函数里吗
程序代码:
int open_file(FILE *fp)
{
    if((fp=fopen("1.txt","wb"))==NULL)
        return 0
    return 1;
}
int write_file(FILE *fp)
{
    if(fp==NULL)
    {
        printf("NO file\n");
        return 0;
    }
    fwrite("1234",4,1,fp);
    return 1;
}
int main()
{
    int flag;
    FILE *fp=NULL
    flag=open_file(fp);
    if(flag)
        write_file(fp);
    return 0;
}


但是结果总是文件生成成功,但是里面没有内容。调试的时候发现,在open_file里面创建文件时,fp里的值是正常的,一从open_file里出来到main函数和write_file函数,fp的各项值都是     
CXX0030:错误,无法计算表达式的值
不明白为什么会这样,参数是带着指针走的,赋值以后为什么出了open_file函数就无法计算了
2015-12-17 15:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
“FILE * 只能定义在main函数里吗?” --- 不首先怀疑自己的代码,却怀疑世人用了无数年的库,怎样强大的自信呀!

你的问题就相当于
void foo( int a )
{
    a = 123;
}

int main( void )
{
    int a;
    foo( a );
    printf( "%d\n", a ); // 此时你觉得应该输出123吗?如果是,再考虑以下代码
    foo( 0 ); // 岂不是就是将 0 变为 123 ?!
}
2015-12-17 15:38
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 2楼 rjsp
知道了,对指针的理解还是不够。谢谢
2015-12-17 15:47
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 2楼 rjsp
把指向结构体的指针当成了数组名用了
2015-12-17 15:51
快速回复:FILE * 只能定义在main函数里吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027987 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved