JupiterOrange
JupiterOrange

Reputation: 349

Character Array

I am trying to build a char array of words using calloc.

What I have:

char** word;
word=(char**)calloc(12,sizeof(char*));
for(i=0;i<12;i++){
word[i]=(char*)calloc(50,sizeof(char));
}

Is this correct if I want a char array that has 12 fields each capable of storing 50 characters?

Thanks!

Upvotes: 0

Views: 176

Answers (1)

hmjd
hmjd

Reputation: 121961

The code is correct. Some points:

So code could be rewritten as:

char** word;
int i;

word = calloc(12, sizeof(char*));
for (i = 0; i < 12; i++)
    word[i] = calloc(50, 1);

In C, most of the functions that operate on 'strings' require the char array to be null terminated (printf("%s\n", word[i]); for example). If it is required that the buffers holds 50 characters and be used as 'strings' then allocate an additional character for the null terminator:

word[i] = calloc(51, 1);

As commented by eq- a less error prone approach to using sizeof is:

word = calloc(12, sizeof(*word));

Upvotes: 1

Related Questions