添加作为参数C给出的分数

时间:2013-11-12 15:37:59

标签: c arguments fractions

我的作业说明 “程序不允许显示任何菜单:它必须接收执行数学函数的选项,并将其参数作为主函数中的参数。” 并且程序的执行示例是(假设程序被称为c2):

./c2 fradd 2/3 5/7 
# Expected output: 29/21

我的理解是我们必须在fFradd()之外编写一个函数int main (int argc, char * argv[])。然后实现该功能。

所以我的问题是:如何将分数作为参数提取并将其拆分为n1d1n2,{{1} }?

我知道(使用给出的例子)2/3将被保存到d2数组的一个空格中(我不确定这是正确的术语,但希望你理解我的观点)。我只是不确定如何让程序读取该参数(argv[])并将2/3识别为argv[2] / n1

我能找到的最接近的是d1之类的内容,但我知道sscanf(argv[2],"%i/%i",n1,d1);用于字符串......显然,sscanf无法完成

1 个答案:

答案 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]所暗示的那样。