在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
答案 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);