c - 我需要从 argv 输入计算数字,但数字不是整数,它们是字符。我怎么投?
问题描述
我无法计算不是整数的数字。我需要一种将字符转换为字符串以使用 atoi() 函数的方法,或者至少一种计算这些数字的方法
我尝试从字符中减去 48/'0'。
argv = 添加 2 3 5 7 11 13
#define MINIMUM_ARGS 2
int main(int argc, char** argv)
{
int i = 0;
int calc = 0;
char string[2] = { 0 };
if ((strcmp(argv[1], "SUB") == 0 || strcmp(argv[1], "ADD") == 0) && ((argc - MINIMUM_ARGS) > 1))
{
string[0] = argv[2]; //Making calc be the value of the first number.
calc = atoi(string);
for (i = 3; i < argc; i++)
{
if (strcmp(argv[1], "SUB") == 0)
{
if (strlen(argv[i]) > MINIMUM_ARGS)
{
calc -= atoi(argv[i]);
}
else
{
calc -= atoi(argv[i] - 48);
}
}
else
{
if (strlen(argv[i]) < MINIMUM_ARGS)
{
string[0] = argv[i];
calc += atoi(string);
}
else
{
calc += atoi(argv[i]);
}
}
}
printf("Result: %d", calc);
}
预期 = 41 得到 = 0
解决方案
在我看来,你让事情变得比需要的更复杂。我不明白为什么MINIMUM_ARGS
在将输入字符串转换为数字的代码中使用 -atoi
这就是你所需要的。
也许像:
#define MINIMUM_ARGS 3
int main(int argc, char** argv)
{
int i = 0;
int calc = 0;
if ((strcmp(argv[1], "SUB") == 0 || strcmp(argv[1], "ADD") == 0) && (argc >= MINIMUM_ARGS))
{
calc = atoi(argv[2]);
for (i = 3; i < argc; i++)
{
if (strcmp(argv[1], "SUB") == 0)
{
calc -= atoi(argv[i]);
}
else
{
calc += atoi(argv[i]);
}
}
printf("Result: %d\n", calc);
}
}
推荐阅读
- python - 如何根据其他列的唯一组合添加 id 列?
- php - 使用变量子目录重写 URL 不起作用
- python - 在 AIX 上安装 cx_Oracle 64 位
- algorithm - 检查字符串中的所有字符是否相同
- php - PHP $_SESSION 超链接点击后为空
- git - 在 Git 中使用远程分支的方法
- c# - 尝试在 .net 4.0 中运行任务(使用 SSIS)
- ruby - 有没有办法通过 sort / sort_by 更改哈希的键?
- c++ - MSBuild - 将 MinimalRebuild (/Gm) 覆盖为 false
- c# - LINQ - (x, i) 做什么?