自动填充数组

时间:2019-08-27 06:42:16

标签: c arrays

我想定义两个变量x和y。 取决于程序,该程序应填充从0到x和从0到y的数组。

我尝试用for填充它,并且可以正常工作,但是无法正确打印出来。

#include <stdio.h>

#define x 4
#define y 4

void build(){
    int i=0, k=0;
    int matrix[x][y];

    for (i = 0; i < x; ++i) {
        for (k = 0; k < y; ++k) {
            matrix[i][k] = i;
            matrix[i][k] = k;
        }
    }

    printf("\t\n%d\n", matrix[x][y]);
}

我希望控制台中的数组看起来像这样。

0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3

3 个答案:

答案 0 :(得分:4)

您看到,为了打印一个数组,您将必须遍历整个数据。您无法在C语言中以这种简单方式打印数组。
您的代码正在打印的内容是垃圾值,因为在索引4,4处,数组没有值。它的索引在x和y方向都从0,1..3开始。

希望有帮助。

$(document).ready(function(){ 
    //init jQuery DataTable
    $('#mainTabel').DataTable({
        'pageLength': 25,
        'columnDefs': [
            {
                'orderable': false,
                'targets': 7              
            },
            {
                className: '.hide',
                'visible': false
            }
        ],      
        // dom: 'Bfrtip',
        // buttons: [
        //     'copy', 'csv', 'excel', 'pdf', 'print'
        // ],
        'language': {
                    'search': "_INPUT_",
                    'searchPlaceholder': 'Search...'
                    },
      'paging'      : true,
      'lengthChange': true,
      'searching'   : true,
      'ordering'    : true,
      'info'        : true,
      'autoWidth'   : true

    }); 
    $('#mainTabel').DataTable().columns('.hide').visible(false);


    //init botstrapToggle
    initToggle();
    $('#mainTabel_wrapper').click( function(){
        initToggle();
    });        
    $('#mainTabel_filter').keyup( function(){
        initToggle();
    });

    function initToggle(){ 
        $(function() {      
            $('.cb').find('input[type=checkbox][data-toggle=toggle]')
                                    .each(function(){
                $(this).bootstrapToggle();
            });
        });
    };
 });

答案 1 :(得分:0)

在C语言中,无法一次性打印数组。您必须遍历数组的每个元素并进行打印。

for(int i = 0; i < x; ++i){
    for(int j = 0; j < y; ++j){
         printf("%d ", matrix[i][j]);
    }
    printf("\n");
}

答案 2 :(得分:0)

我试图猜测您的误解,并注释和编辑了您的代码,以解释其工作原理以及您需要了解的内容。

#include <stdio.h>

#define x 4
#define y 4

void build(){
    int i=0, k=0;
    int matrix[x][y]; // top allowed indexes are x-1 and y-1

    for (i = 0; i < x; ++i) {
        for (k = 0; k < y; ++k) {
            matrix[i][k] = i; // first write getting ignored/overridden by next
            matrix[i][k] = k;

            // printing here gets you many values, note the removed \n
            printf("\t%d", matrix[i][k]);
        }
        // printing line break here gets you lines instead of single values
        printf("\n");
    }

    // not inside any loop, so only one %d value gets printed
    // printf("\t\n%d\n", matrix[x][y]); // accessing beyond both dimension
    // also your attempt to let printf figure out how to print the whole 2D array,
    // at least that is what I think you try, does not work in C    
}