将变量传递给另一个文件

时间:2015-03-19 01:30:42

标签: c unix gcc floating-point

在ellipsefunctions.c中使用时,值会发生变化,我不明白。这些值也不是静态的,并且根据A,B,C而变化,而h和k是相同的。 soemeone可以告诉我发生了什么吗?

a.out是使用' gcc ellipsemain.c ellipsefunctions.c编译的。

无法发布截图,因为我还没有足够的代表,但这里有链接

i.stack.imgur.com/Ag6Vg.png(如果截图不是你的话,请看

ellipsemain.c:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    if(6 > argc){
        printf("Too few arguments, please follow the format: <executable> <A> <B> <C> <h> <k>\n");
        exit(0);
    }
    if(6 < argc){
        printf("Too many arguments, the program will still attempt to run using the first 5 inputs\n");
    }

    float A = atof(argv[1]);
    float B = atof(argv[2]);
    float C = atof(argv[3]);
    int h = atoi(argv[4]);
    int k = atoi(argv[5]);

    printf("%f\n%f\n%f\n%d\n%d\n\n\n", A, B, C, h, k);
    usingany(A, B, C, h, k);
    printf("\n\n%f\n%f\n%f\n%d\n%d\n", A, B, C, h, k);
    return 0;
}

ellipsefunctions.c:

#include <stdio.h>
#include <stdlib.h>

void usingany(float A, float B, float C, int h, int k);


void usingany(float A, float B, float C, int h, int k)
{
    printf("%f\n%f\n%f\n%d\n%d\n", A, B, C, h, k);
    return;
}

控制台:

y:〜/ ENEE150 / ENEE150HW1 / Problem1:a.out 1 1 1 1 1 1.000000 1.000000 1.000000 1 1

1.875000 0.000000 1.875000 0 1072693248

1.000000 1.000000 1.000000 1 1

1 个答案:

答案 0 :(得分:0)

这里有两个问题:

1:您正在为argv个变量编制索引。

C中的所有数组都是0索引的,你应该得到元素[0] [1] [2] [3] and [4]

更正,我忘记了程序名在argv [0]中,你这样做是对的。我将假设问题仅限于以下几点:

2:在我的测试中,实际从usingany获取不同值的问题是您没有为main定义知道如何传递数据。

如果我用gcc -Wall标志编译该程序,我得到这个输出:

$ gcc m.c e.c -Wall
m.c: In function 'main':
m.c:14:1: warning: implicit declaration of function 'usingany' [-Wimplicit-function-declaration]

通常,隐式函数不带参数,并返回一个int。

您需要获取ellipse函数顶部的定义,并将其移动到ellipsmain或共享头文件中。

void usingany(float A, float B, float C, int h, int k);