C - argv 存储随机值而不是给定值
C - argv stores random values instead of given ones
程序应采用三个命令行参数,其中第一个是算术操作数,第二个和第三个数字应应用于操作数
该程序将打印随机值。
#include <stdio.h>
int main (int argc, int *argv[])
{
switch ( (char) * argv[1] )
{
case '+' : printf("%d", *argv[2] + *argv[3] );
}
return 0;
}
此外,我应该如何获得不同数据类型的命令行参数?使用类型转换是否正确?
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
if ( argc > 3 )
{
switch ( *argv[1] )
{
case '+' :
printf("answer: %d\n", atoi(argv[2]) + atoi(argv[3]) );
break;
default :
printf("ERROR: operand %c invalid\n",*argv[1]);
}
}
else
{
printf("ERROR: you must enter operator, plus two operands. e.g.:\n");
printf("%s + 3 2\n",argv[0]);
return 1;
}
}
正如其他人所提到的,参数被作为字符串数组读入 argv
。因此你必须使用 char *argv[]
。从字符串到整数的转换由 atoi
执行。只需将字符转换为整数即可为您提供该字符的 ASCII 表示形式。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
switch ( *argv[1] )
{
case '+':
printf("%d\n", atoi(argv[2]) + atoi(argv[3]) );
break;
}
return 0;
}
要获得浮点运算,请将 %d
替换为 %f
,将 atoi
替换为 atof
。
当然你也应该添加完整性检查。至少,您应该检查 argc
以防止读取未初始化的 space。查看评论。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]) {
if(argc != 4) {
printf("Error message");
printf("USAGE: ./a.out <operand> <number1> <number2>");
return 0;
}
switch(*argv[1]) {
case '+':
printf("%d", (atoi(argv[2])+atoi(argv[3])));
break;
default:
printf("Enter valid operand");
}
}
程序应采用三个命令行参数,其中第一个是算术操作数,第二个和第三个数字应应用于操作数 该程序将打印随机值。
#include <stdio.h>
int main (int argc, int *argv[])
{
switch ( (char) * argv[1] )
{
case '+' : printf("%d", *argv[2] + *argv[3] );
}
return 0;
}
此外,我应该如何获得不同数据类型的命令行参数?使用类型转换是否正确?
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
if ( argc > 3 )
{
switch ( *argv[1] )
{
case '+' :
printf("answer: %d\n", atoi(argv[2]) + atoi(argv[3]) );
break;
default :
printf("ERROR: operand %c invalid\n",*argv[1]);
}
}
else
{
printf("ERROR: you must enter operator, plus two operands. e.g.:\n");
printf("%s + 3 2\n",argv[0]);
return 1;
}
}
正如其他人所提到的,参数被作为字符串数组读入 argv
。因此你必须使用 char *argv[]
。从字符串到整数的转换由 atoi
执行。只需将字符转换为整数即可为您提供该字符的 ASCII 表示形式。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
switch ( *argv[1] )
{
case '+':
printf("%d\n", atoi(argv[2]) + atoi(argv[3]) );
break;
}
return 0;
}
要获得浮点运算,请将 %d
替换为 %f
,将 atoi
替换为 atof
。
当然你也应该添加完整性检查。至少,您应该检查 argc
以防止读取未初始化的 space。查看评论。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]) {
if(argc != 4) {
printf("Error message");
printf("USAGE: ./a.out <operand> <number1> <number2>");
return 0;
}
switch(*argv[1]) {
case '+':
printf("%d", (atoi(argv[2])+atoi(argv[3])));
break;
default:
printf("Enter valid operand");
}
}