linux下GCC编译器,怎么在main后面的参数中写入数字来传入数据。 比如实现 Calc + 22 22 输出 44 。

如何传入数字!!C99以上标准。。

第1个回答  2012-10-23
传入数字? 命令行传入的都是字符串,你需要自己把对应的字符串转换成数字。
下面的程序实现整数加法:
#include <stdio.h>
#include <stdlib.h>
int main (int argc,char *argv[]){
printf("%d",atoi(argv[2])+atoi(argv[1]));
return 0;
}
第2个回答  2012-10-23
[root@liuxiting .test~]# cat test.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a, b;
char c;
if ( argc < 3)
printf("wrong parameter \n");
else
{
a = atoi(argv[2]);
b = atoi(argv[3]);
c = *argv[1];
if ( c == '+')
{
printf("%d ", a);
printf("%c", c);//*argv[1]);
printf("%d = ",b);
printf("%d\n",a+b);
}
}
}
[root@liuxiting .test~]#gcc test.c
[root@liuxiting .test~]# ./a.out + 22 33
22 +33 = 55

也就是将取到的参数用atoi函数变成数字追问

这个问题已经在一楼回答之后解决了,可是出现了个段错误,很纳闷,也没法把源码发上来。

就到此为止吧,如果你能这样解决段问题,那分就给你了。
思路是这样的。传入符号,数字1,数字2,数字是DOUBLE型的,最终输出也是一个DOUBLE型。
加减函数写在另一个C文件中,也就2个函数。

追答

段错误,就是引用了不该引用的内存地址,比如说你只给了一个参数,而程序去取第二个参数的地址,第二个参数是没有的,所以出现了段错误,解决这种问题的方法就是加上参数个数的判断。
代码如下:
#include
#include
double calc(int a, char c, int b)
{
double res;
if ( c == '+')
{
return (a+b);
}
else if (c == '-')
{
return (a-b);
}
return res;
}
int main(int argc, char *argv[])
{
int a, b;
char c;
if ( argc != 4 ) //此处判断参数的个数,如果不为4个则报wrong parameter的错误
printf("wrong parameter \n");
else
{
double res;
res = calc( atoi(argv[2]), *argv[1], atoi(argv[3]));
printf("%lf \n", res);
}
}

追问

很不错,段错误是atof造成的,但是换成atoi又只能执行整形运算。难道要重载函数?

无论怎么样,分给你了。

本回答被提问者和网友采纳

cmd中全部命令```
CMD\\输入net config server 可以显示不能配置的下服务器计算机名 \\服务器注释 \\服务器版本(即软件版本号) 服务器处于活动状态(即网络描述) \\服务器处于隐藏状态(即 \/hidden 设置) 最大登录用户数(即可使用服务器共享资源的最大用户数) 每个会话打开文件的最大数(即用户可在一个会话中打开服务器文件的最大数) ...

计算机中的CMD指什么.什么意思.
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具,默认是没有安装的,在安装目录的Support\/tools文件夹内) del -F 文件名 加-F参数后就可删除只读文件,\/AR、\/AH、\/AS、\/AA分别表示删除只读、隐藏、系统、存档文件,\/A-R、\/A-H、\/A-S、\/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如...

CMD常用命令大全
在9x系统下输入command就可以打开命令行,而在NT系统上可以输入CMD来打开,在windows2000后被CMD替代,利用CMD命令查询系统的信息或者

相似回答