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

标签 c macos

我正在 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/

相关文章:

xcode - 我可以在 Snow Leopard 机器上为 Lion 开发应用程序吗?

macos - 使用TextMate打开Grails项目

c - 获取网络接口(interface)索引

c - Linux 中的 Select 循环——如何让它变得更好?

c - 在事件发生之前保持线程不活动?

c - epoll 事件不会引发 SIGIO

c - 如何在 Linux 上检查进程的堆大小

c - ODE 求解器 C 程序系统的初始值问题

macos - 如何在 Mac OS X Lion 上安装 Sqlite3

macos - 如何在 OSX 上的 .app 项目中包含带有 CMake 的 Qt 库?