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

标签 c arguments fractions

我的作业状态 “程序不允许显示任何菜单:它必须接收要执行的数学函数的选项及其参数作为主函数中的参数。” 程序执行示例如下(假设程序名为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/

相关文章:

c - 为什么 248x248 是我可以声明的最大二维数组大小?

c++ - 在没有 cstring 的情况下比较 C++ 中的字符数组和字符串文字

c - 我如何使用 getOpt 来确定 C 中是否没有给出任何选项?

Python 2.7 - 连分数扩展 - 理解错误

python - 将 fractions.Fraction 转换为 decimal.Decimal 的最佳方法?

c++ - C++中如何将分数转换为 float

c - C 中的寄存器和自动变量

c - 下面代码中的链表 : What does (! elem) 意味着 and (!(elem = *stack)) ?

c - 谜题: "[] is symmetric"?

excel - 函数参数 VBA