使用Rand()填充多维数组

时间:2014-09-01 17:49:35

标签: c

我正在完成一项练习,其中我想创建一个数组并用随机和无意义的IP地址填充它。

它应该是一个二维array[5][4]。它是5个地址,每个地址由4个部分组成(即{192,168,0,1}。我的麻烦来自于使用rand()函数只填充数组的一个维度。我无法弄清楚如何在一种方式:

  1. 编译器接受,
  2. 不会让程序崩溃,
  3. 不会产生完全随机的结果。
  4. 虽然我的主要问题来自下面的for循环for (int o = 0; o < octets; o++),但请随时评论我的任何代码,最佳做法等。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        const int addresses = 5, octets = 4;
        int ips[addresses][octets];
    
        for (int a = 0; a < addresses; a++) {
            for (int o = 0; o < octets; o++) {
                ips[octets] = rand() % 255;
            }
        }
        for (int i = 0; i < addresses; i++) {
            for (int j = 0; j < octets; j++) {
                printf("%d ", ips[i][j]);
            }
            putchar('\n');
        }
        return 0;
    }
    

    此代码的编译器错误是......:

    ipAddressArray.c: In function 'main':
    ipAddressArray.c:18:18: error: incompatible types when assigning to type 'int[(s
    izetype)octets]' from type 'int'  ps[octets] = rand()%255;
    

1 个答案:

答案 0 :(得分:2)

重写此循环,如

for (int a = 0; a < addresses; a++) {
    for (int o = 0; o < octets; o++) {
        ips[a][o] = rand() % 255;
    }
}