| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4106 人关注过本帖
标题:C语言 可不可以在被调用的子函数中生成文本文件,然后在主函数中打开生成 ...
只看楼主 加入收藏
upckun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
C语言 可不可以在被调用的子函数中生成文本文件,然后在主函数中打开生成的文本文件读取数据
各位老师,大家好!我现在想请问一个问题!
C语言中   可不可以在被调用的子函数中生成一个文本文件,(子函数没有输入变量,也没有输出变量,仅仅写了一个文本文件)
然后在主函数中打开子函数中生成的文本文件读取数据!这样可不可以行得通呢?
搜索更多相关主题的帖子: C语言 文本文件 
2013-07-27 11:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
可以

授人以渔,不授人以鱼。
2013-07-27 12:09
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:5 
这个不是问题啊

2013-07-27 13:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
有小小问题,但不是大问题,外部函数如何知道子函数使用的文件名及其位置,在不允许传入传出的情况下,只能使用全局变量或常量,这样有瑕疵,但属于“可以”。归根结底是那个不允许传入传出需求造成的,是应该考虑为什么要做这样的需求,这个问题就不小了。

授人以渔,不授人以鱼。
2013-07-27 14:04
xflus
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2013-7-27
收藏
得分:5 
显然可以啊.
2013-07-27 14:52
upckun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-26
收藏
得分:0 
回复 4楼 TonyDeng
我举一个简单的例子,请您看一下这个程序错误在那里!


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
#include <string.h>

void wdata()
{   
    FILE *fp_create_well_info;
    float den[4][4];
    fp_create_well_info=fopen("create_well_info.txt","w");
    int i,j;
   
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            den[i][j]=1;
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            fprintf(fp_create_well_info,"%f ",den[i][j]);
    fclose(fp_create_well_info);

    printf("\n*************The get_well_log() end**************\n");

}



void main()
{   


    float a[4][4];
    int i,j;
    wdata();
    FILE *fp_create_well_info=fopen("create_well_info.txt","r");
   
   
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            fscanf(fp_create_well_info,"%f ",&a[i][j]);
    fclose(fp_create_well_info);
   
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            printf("%f\n",a[i][j]);

}
2013-07-27 15:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你出什么现象了?

授人以渔,不授人以鱼。
2013-07-27 15:17
VIPBUJ
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2013-7-27
收藏
得分:5 
2013-07-27 15:19
upckun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-7-26
收藏
得分:0 
回复 7楼 TonyDeng
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <malloc.h>
#include <string.h>

void wdata()
{   
    FILE *fp_create_well_info;
    float den[4][4];
    fp_create_well_info=fopen("create_well_info.txt","w");
    int i,j;
   
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            den[i][j]=1;
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            fprintf(fp_create_well_info,"%f ",den[i][j]);
    fclose(fp_create_well_info);

    printf("\n*************The get_well_log() end**************\n");

}



void main()
{   


    float a[4][4];
    int i,j;
    FILE *fp_create_well_info;
    wdata();
    fp_create_well_info=fopen("create_well_info.txt","r");
   
   
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            fscanf(fp_create_well_info,"%f ",&a[i][j]);
    fclose(fp_create_well_info);
   
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            printf("%f\n",a[i][j]);
 

}


我又修改了一下,请您过目!您可以试运行一下,我在VC++6.0下运行出现错误:
 wdata函数中的错误error C2143: syntax error : missing ';' before 'type'
                  error C2065: 'i' : undeclared identifier
                  error C2065: 'j' : undeclared identifier


但是在DEV-C++5环境下运行没有错误!
2013-07-27 15:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你用了.c做文件扩展名?int i,j定义在执行语句之后了,旧式C语法不允许。要么把它提到前面去,要么把文件扩展名改回.cpp,用.c干什么呢,读书不要那么死板啊。

授人以渔,不授人以鱼。
2013-07-27 15:42
快速回复:C语言 可不可以在被调用的子函数中生成文本文件,然后在主函数中打开 ...
数据加载中...
 
   



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

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