gpt4 book ai didi

c - 如何通过终端将值传递给程序函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:17:47 26 4
gpt4 key购买 nike

#include <stdio.h>
void fun_one(int a,int b);
void fun_two(int a,int b);
int main()
{
printf("Result=");
return 0;
}

void fun_one(int a,int b){
printf("%d\n",a+b);
}
void fun_two(int a,int b){
printf("%d\n",a*b);
}

我是这样编译运行程序的:

cc exec.c -o exec

./exec < fun_two 3 4

但是没有返回我期望的结果,是不是命令出错了?

输出:结果=

最佳答案

您的代码编辑显示了如何使用您输入的两个数字的函数 2。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void fun_one(int a,int b);
void fun_two(int a,int b);
int main(int, char **);


int main(int argc, char ** argv)
{
int a,b;
a= atoi(argv[1]);
b=atoi(argv[2]);
printf("Result=");fun_two(a,b); // similar to what you want from comments

//using both functions
printf("a+b=");fun_one(a,b);
printf("a*b=");fun_two(a,b);
return 0;
}

void fun_one(int a,int b){
printf("%d\n",a+b);
return;
}
void fun_two(int a,int b){
printf("%d\n",a*b);
return;
}

我已经修改了你的代码,这样如果你编译它

gcc -o exec exec.c 

你将能够运行它

./exec 4 3

获得所需的输出 - 请注意,我希望使用 cc 进行编译会给出完全相同的输出,但我无法对其进行测试。

我所做的是更改 main 的定义,以便它可以在您调用它时接受输入。额外的位被放入字符串中。

函数atoiascii 字符串转换为 一个整数 数字,以便您输入命令的数字line 可以作为数字而不是字符串来处理。

请注意,此代码相当脆弱,可能会出现分段。过错。如果您在调用程序后不输入两个数字,结果将不可预测。您可以通过检查 argc 的值 - 输入命令时在行中键入的内容的数量并通过检查 atoi 是否有效来使其更可靠,但这会使代码更长,我认为更重要的是看到做你现在想要实现的事情的方式。

下面是一个更通用的代码,它允许您选择要在代码中运行的函数....

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void fun_one(int a,int b);
void fun_two(int a,int b);
int main(int, char **);


int main(int argc, char ** argv)
{
int a,b;
a= atoi(argv[2]);
b=atoi(argv[3]);

if (!strcmp("fun_one",argv[1]))
{
printf("Result=");fun_one(a,b);
}
else if (!strcmp("fun_two",argv[1]))
{
printf("Result=");fun_two(a,b);
}
else printf("Didn't understand function you requested. \n\n");

return 0;
}

void fun_one(int a,int b){
printf("%d\n",a+b);
return;
}
void fun_two(int a,int b){
printf("%d\n",a*b);
return;
}

函数现在为以下输入提供以下输出

./exec fun_three 3 4
Didn't understand function you requested.

./exec fun_one 3 4
Result=7
./exec fun_two 3 4
Result=12

现在使用上面的代码,您在命令后输入三项内容 - 您想要的功能,然后是两个数字 - 如果无法识别功能,则会出现错误消息。

strcmp 函数比较两个字符串,如果相同则返回零。零在逻辑上等于假,所以 ! 符号用作非,它将零转换为一,将不等于零的数字转换为零。结果是,如果两个字符串相同,则逻辑测试将为真。

关于c - 如何通过终端将值传递给程序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com