在C中从shell声明一个全局CHAR数组

时间:2016-11-22 20:45:14

标签: c arrays shell concurrency global-variables

我在C中遇到全局变量的问题。我必须用C创建一个字符串数组。字符串的数量将由shell传递的参数(number_of_string = atoi(argv[1]))确定。所以我认为最好的方法是使用number_of_strings指针数组。这个数组的每一个元素都指向一个用malloc保留的内存部分。主要问题是我需要在执行main(argv [1]之前尚不存在)之前定义数组的大小,作为全局变量。我不知道怎么解决这个问题。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

这是否解决了您的问题?

#include <stdlib.h>

char **strings;

int main(int argc, char **argv)
{
    int size;
    int i;
    if ( argc < 2 )
        return 1;

    size = atoi(argv[1]);

    if ( size <= 0 )
        return 2;

    strings = malloc(sizeof(char*)*size);

    for ( i = 0 ; i < size ; i++ ) {
        strings[i] = malloc(sizeof(char)*100);
    }

    // You now have argv[1] 100-byte strings (don't forget about NULL terminators)
}