gpt4 book ai didi

c - 如何在 Mac 终端上将数组输入到 C 程序中?

转载 作者:行者123 更新时间:2023-11-30 14:59:25 26 4
gpt4 key购买 nike

我正在 OSX 10.11 上用 C 编写一对函数来计算极坐标形式的相量和的幅度和角度,但我遇到了一些麻烦。我的两个主要问题是:

1) 如何将两个数组作为终端中函数的输入(我想要求和的相量的幅度和角度)?

2) 当 C 强制我拥有 main、argc 和 argv 时,我该如何做到这一点?

这是代码:

float PhasMag(float *coef,float *angle);
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv)
{
if(argc != 2){
printf("Incorrect number of arguments, please input an array of magnitudes and an array of angles, exiting\n");
return -1;
}
return PhasMag(argv[1],argv[2]);
}

float PhasMag(float *coef,float *angle)
{
float R = 0,Im = 0, Mag; //real and imag. parts of answer
float *countM;
int sc = 0 ,sa;
countM = coef;
while(countM != NULL){
countM = countM + 1;
sc = sc + 1;
}
sa = sc;
for(int i = 0;i<sc;i++){//computes real part
coef = coef + i; angle = angle + i;
R = R + (*coef)*cos(*angle);
}
coef = coef - sc + 1; angle = angle - sa + 1;
for(int k = 0;k<sa;k++){//computes imaginary part
coef = coef + k; angle = angle + k;
Im = Im + (*coef)*sin(*angle);
}
return sqrt(R*R+Im*Im);
}

最佳答案

从命令行参数(argv[i] 中的内容)得到的是字符串 (char *)。您必须自己在 C 中将它们解析为 float 。

如果您想让程序将两个数组作为两个单独的输入,您可以这样指定

 ./yourprogram '1.0 2.0 3.0 4.0' '5.0 6.0 7.2 8.1'

请注意两个数字数组周围的引号,这对于 shell 将它们作为两个参数传递给程序非常重要,而不是作为 8 个单独的 float 。

您必须手动解析每个字符串中的 float ,分割空格字符,并使用诸如 scanfatof 之类的函数来解析 float - 字符串各部分的点数。

或者,您可以指定命令行界面

  ./yourprogram 5 a1 a2 a3 a4 a5 b1 b2 b3 b4 b5

然后在程序中运行 argv 中的 10 个浮点值。有很多方法可以做到这一点。我个人会让程序从 stdin 读取,格式如下:“第一行包含数组 N 的大小,下一行包含 N 个浮点值 coeff,下一行包含 N 个浮点值例如,然后您可以更轻松地让其他程序生成该程序的输入。

HTH,

关于c - 如何在 Mac 终端上将数组输入到 C 程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com