我的作业状态 “程序不允许显示任何菜单:它必须接收要执行的数学函数的选项及其参数作为主函数中的参数。” 程序执行示例如下(假设程序名为c2):
./c2 fradd 2/3 5/7
# Expected output: 29/21
我的理解是我们要写一个函数fFradd()
int main (int argc, char * argv[])
之外。然后实现该功能。
所以我的问题是:如何将给出的分数作为参数并将它们拆分为 n1
, d1
, n2
, d2
?
我知道(使用给出的示例)2/3 将被保存到 argv[]
的一个空间中数组(我不确定这是正确的术语,但希望你能理解我的观点)。我只是不确定如何让程序读取该参数( argv[2]
)并将 2/3 识别为 n1
/d1
.
我能找到的最接近的是使用类似sscanf(argv[2],"%i/%i",n1,d1);
的东西,但我知道sscanf
用于字符串......显然这不能用 scanf()
来完成
最佳答案
你说得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]
所暗示的那样。
关于c - 添加作为参数给出的分数 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933395/