我遇到了这个代码的问题,我试图将array1与array2相加。
我通过命令行参数输入array2的数字。
当我输入10个数字时,它正在工作,但当我添加少于10个时,我收到内存访问错误。
我现在的问题是:如何用数字0填充缺少的数组字段?例如:我输入9个数字,第10个字段应为0.
答案 0 :(得分:2)
您没有检查传递了多少命令行参数,当您索引到命令行参数数组时,您将收到越界错误。
在addiren
函数中,您应该利用传递的argc
并在for循环限制中使用它。
#include <stdio.h>
#include <stdlib.h>
int addiren(int argc, char**argv){
int array_one[10] = {0,1,1,2,3,5,8,13,21,35};
int array_two[10] = {0}; //Quick way to set the array to all zeros
int array_three[10] = {0};
//Set array_two with your cmd-line args, notice the use of argc
for(int i = 1; i<argc && i<=10; i++){
array_two[i-1] = atoi(argv[i]);
}
//Add array_one with array_two to array_three
for(int i = 0; i<10; i++){
array_three[i] = array_one[i]+array_two[i];
}
//Return an int since that's what the function return type requires
return 0;
}
希望这有帮助!