使用结构将一个文件导入另一个文件?

时间:2011-05-04 16:57:31

标签: c

我有两个文件:p1.c和p2.c。

我需要将p1.c中存储在结构中的值用于p2.c.请帮我弄清楚如何实现这一目标。我应该使用extern吗?

p1.c

typedef struct What_if
{
    char price[2];
} what_if ;

int main()
{
    what_if  what_if_var[100];

    file * infile;
    infile=fopen("filepath");

    format_input_records();
}

int format_input_records()
{
    if ( infile != NULL )
    {
        char mem_buf [500];

        while ( fgets ( mem_buf, sizeof mem_buf, infile ) != NULL ) 
        {
            item = strtok(mem_buf,delims);     
            strcpy(what_if_var[line_count].price,item) ;
            printf("\ntrans_Indicator     ==== : : %s",what_if_var[0].price);
        }
    }
}

p2.c

"what_if.h"  // here i include the structure

int main()

{
    process_input_records(what_if_var);
}

int process_input_records(what_if *what_if_var)
{
    printf("\nfund_price process_input_records    ==== : : %s",what_if_var[0]->price);

    return 0;
}

1 个答案:

答案 0 :(得分:1)

试试这个:

whatif.h:

#ifndef H_WHATIF_INCLUDED
#define H_WHATIF_INCLUDED

struct whatif {
    char price[2];
};
int wi_process(struct whatif *);

#endif

p1.c

#include "whatif.h"

int main(void) {
    struct whatif whatif[100];
    whatif[0].price[0] = 0;
    whatif[0].price[1] = 1;
    whatif[1].price[0] = 42;
    whatif[1].price[1] = 74;
    whatif[99].price[0] = 99;
    whatif[99].price[1] = 100;
    wi_process(whatif);
    return 0;
}

p2.c

#include <stdio.h>
#include "whatif.h"

int wi_process(struct whatif *arr) {
    printf("%d => %d\n", arr[0].price[0], arr[0].price[1]);
    printf("%d => %d\n", arr[1].price[0], arr[1].price[1]);
    printf("%d => %d\n", arr[99].price[0], arr[99].price[1]);
    return 3;
}

然后将所有这些编译并链接在一起,例如使用gcc

gcc -ansi -pedantic -Wall p1.c p2.c