[英]What's the best way to read a mathematical function f(x,y) command line argument?
[英]c: How to use sscanf to read the command-line argument (x,y) and store x and y as separate doubles inside a struct?
我正在研究一个复数计算器。 用户必须使用命令行将复杂操作数作为 arguments 传递给主 function。 此外,数字需要准确地以这种表示法(x,y)
传递,其中 x 是数字的实部,y 是虚部。
我为复数创建了一个结构。 我相信我必须使用 sscanf 从 argv 读取并将值存储到我的结构复杂变量的相应实部和虚部(它将保存要操作的数字),但我无法实现它,尤其是在使用括号格式时。
目前,我专注于能够从命令行参数中存储至少一个复数。 我希望这里有人能引导我朝着正确的方向前进。 这是我的代码部分,它处理从 argv 读取并存储在我的 struct complex variable struct complex c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct complex {
double real;
double imag;
};
int main(int argc, char *argv[]) {
struct complex c;
sscanf(argv, "(%lf,%lf)", &c.real, &c.imag);
printf("%.2lf %.2lf \n", c.real, c.imag);
return 0;
}
我尝试在sscanf
的参数中使用不同的变体,但到目前为止,我只成功存储了一个双精度数(对应于数字的实数部分),并且仅在用户不使用括号时. 我该如何进行?
我认为最好将参数读取为整个字符串(%s)然后处理它。 但如果你坚持使用 sscanf 你可以尝试使用它。
但请记住,当您传递 (1,2) 之类的参数时,类似的命令会认为它是一个参数,因此您需要传递 (1, 2) 之类的东西 - 它在逗号和 2 之间有空格。也不要忘记检查您是否有 3 个参数。
struct complex
{
double real;
double imag;
};
int main(int argc, char *argv[])
{
struct complex c;
if(3 == argc)
{
sscanf(argv[1], "(%lf,", &c.real);
sscanf(argv[2], "%lf)", &c.imag);
printf("%.2lf %.2lf \n", c.real, c.imag);
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.