0

我的作业指出 “程序不允许显示任何菜单:它必须接收要执行的数学函数的选项及其参数作为主函数中的参数。” 程序执行的例子是(假设程序被称为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()

4

1 回答 1

0

你是 100% 正确的,你应该使用sscanf().

不确定您所说的“sscanf()用于字符串”是什么意思。它用于扫描字符串,并将部分字符串转换为其他类型的其他值。在这里,再次阅读手册页以刷新您对该函数能够做什么的想法。

转换为整数是很常见的,几乎就像你说的那样。但是,您必须为每次转换传递目标变量的地址,因此:

int n, d,

if(sscanf(argv[i], "%d/%d", &n, &d) == 2)
{
  printf("got the fraction %d/%d\n", n, d);
}

argv[i]正如暗示的那样,上述内容可能应该被放入一个循环中。

于 2013-11-12T15:42:40.960 回答