我的作业说明 “程序不允许显示任何菜单:它必须接收执行数学函数的选项,并将其参数作为主函数中的参数。” 并且程序的执行示例是(假设程序被称为c2):
./c2 fradd 2/3 5/7
# Expected output: 29/21
我的理解是我们必须在fFradd()
之外编写一个函数int main (int argc, char * argv[])
。然后实现该功能。
所以我的问题是:如何将分数作为参数提取并将其拆分为n1
,d1
,n2
,{{1} }?
我知道(使用给出的例子)2/3将被保存到d2
数组的一个空格中(我不确定这是正确的术语,但希望你理解我的观点)。我只是不确定如何让程序读取该参数(argv[]
)并将2/3识别为argv[2]
/ n1
。
我能找到的最接近的是d1
之类的内容,但我知道sscanf(argv[2],"%i/%i",n1,d1);
用于字符串......显然,sscanf
无法完成
答案 0 :(得分:0)
你是100%正确的,你应该使用sscanf()
。
不确定“sscanf()
的字符串是什么意思”。这是扫描一个字符串,并将字符串的一部分转换为其他类型的其他值。在这里,read the manual page one more time来刷新你对函数能够做什么的想法。
转换为整数非常常见,几乎就像你说的那样完成。您必须为每次转换传递目标变量的地址,因此请执行以下操作:
int n, d,
if(sscanf(argv[i], "%d/%d", &n, &d) == 2)
{
printf("got the fraction %d/%d\n", n, d);
}
上面应该放在一个循环中,正如argv[i]
所暗示的那样。