如何使用文件中的数据填充已分配的2D数组?

时间:2016-02-16 20:34:09

标签: c multidimensional-array

我在C中有以下代码:

#define LINES 40
int i,j,k = 0;

char **c;
char tmp;

// allocate key array memory
if( (c = malloc(LINES*sizeof(char*))) == NULL)
  printf("Error allocating memory\n");

for(i=0;i<LINES;i++){
    c[i] = malloc(10*sizeof(char));
}

我还有一个包含这样数据的文件:

AsfAGHM5om
~sHd0jDv6X
uI^EYm8s=|
....

如何使用该文件中的数据填充上面分配的数组(例如使用fgetsfgetc)?

1 个答案:

答案 0 :(得分:0)

如果您的字符串长度不变,就像您的示例一样,那么您可以定义一个以BUFSIZ作为单词最大长度的宏。 注意:不要忘记在每个字符串末尾加上 '\0' 字符。 在这种情况下,解决方案将如下所示:

// create an array of strings
char ** array = (char **)calloc(LINES, sizeof(char *));

for (size_t i = 0; i < LINES; i++) {
    // allocate space for each string
    array[i] = (char *)calloc(1, BUFSIZ);
    // get the input
    fgets(array[i], BUFSIZ, stdin);
    // remove the '\n' character
    // from the end of the string
    array[i][strlen(array[i]) - 1] = '\0';
}