用C填充C中的数组

时间:2017-03-16 22:20:08

标签: c arrays addition

Array addition in C

我遇到了这个代码的问题,我试图将array1与array2相加。

我通过命令行参数输入array2的数字。

当我输入10个数字时,它正在工作,但当我添加少于10个时,我收到内存访问错误。

我现在的问题是:如何用数字0填充缺少的数组字段?例如:我输入9个数字,第10个字段应为0.

1 个答案:

答案 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;
}

希望这有帮助!