c - 定义一个二维全局数组,其大小必须从文件中扫描

标签 c data-structures

我想定义一个二维数组作为全局变量:

 int visited[nbVertices][nbVertices];

但问题是我必须从文件中扫描“nbVertices”。无论如何要解决这个问题? 我认为它可以通过使用指针来修复,但我不知道该怎么做。

最佳答案

因此,尽管我们正在讨论:您不需要数组是全局的。因此,您可以只使用可变长度数组并将数组传递给所有需要它的函数:

void printArray(int n, int k, int arr[n][k])
{
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            printf("%6d", arr[i][j]);
        }
        printf("\n");
    }
}

int main()
{
    // get user input in the format "n" <space> "k"
    char *end;
    char buf[LINE_MAX];
    if (!fgets(buf, sizeof buf, stdin))
        return -1;

    // create array, fill it with random stuff
    int n = strtol(buf, &end, 10);
    int k = strtol(end, NULL, 10);
    int a[n][k];

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < k; j++) {
            a[i][j] = random();
        }
    }

    // print it
    printArray(n, k, a);

    return 0;
}

关于c - 定义一个二维全局数组,其大小必须从文件中扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20807187/

相关文章:

无法删除单链表中的节点

c - Realloc 一直失败(在 C 中)

c - 仅使用递归如何实现 O(log n) 幂函数 a^n ?

java - 从平面列表生成嵌套列表(树)

c++ - 如何在自定义 llvm 传递之间正确传递数据结构

c++ - 单链表,节点插入最低到最高节点值的问题

java - 需要创建一个类似于 HashSet 的数据结构,但应该具有包含元素的频率

在 Doxygen 中评论一个文件

c - 在此示例中无法理解从 (char *) 到 (int *) 的指针取消引用

c - Thermo 迷你打印机上 C 语言的文本换行