这是一个简单的程序,它将命令行上发送的所有数字相加。 它应该采用任意数量的值。它一直给我每行一个 0。我已经厌倦了进行一些更改,但它继续提供相同的输出
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
for (int i = 0; i < argc; i++)
{
int sum=0;
sum+=atoi("argc[i]");
cout << sum << endl;
}
return 0;
}
"argc[i]"
是一个文字字符串,所以当被atoi
转换时给出0! sum
应在循环之前初始化:
int main(int argc, char *argv[]) {
int sum=0;
for (int i = 1; i < argc; i++) {
sum += atoi(argv[i]);
}
cout << sum << endl;
return 0;
}
按照惯例,argv[0]
是程序的名称(或者至少是命令行中用于调用程序的名称),因此最好从索引 1 开始。
你需要花十几个小时阅读更多的书,并在电脑上进行实验。在这里问这样一个基本问题对你根本没有帮助(被认为是粗鲁的......
不要忘记在编译时启用调试信息和所有警告(例如,如果使用 GCC,则使用 g++ -Wall -g
)。然后,学习如何使用调试器(例如 gdb
)。
你的基础知识不清楚,我建议你读这本书。程序应该是这样的:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
int sum=0;
for (int i = 0; i < argc; i++)
{
sum+=atoi(argv[i]);
}
cout << sum << endl;
return 0;
}
将参数总和移到循环外!!
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
int sum=0;
for (int i = 0; i < argc; i++)
{
sum+=atoi(argv[i]);
cout << sum << endl;
}
return 0;
}