0

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!

4

1 に答える 1

1

コードは正しいです。いくつかのポイント:

したがって、コードは次のように書き直すことができます。

char** word;
int i;

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

Cでは、「文字列」を操作するほとんどの関数では、char配列をnullで終了する必要があります(printf("%s\n", word[i]);たとえば)。バッファが50文字を保持し、「文字列」として使用する必要がある場合は、nullターミネータに追加の文字を割り当てます。

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

eq-によってコメントされているように、使用するためのエラーが発生しにくいアプローチsizeofは次のとおりです。

word = calloc(12, sizeof(*word));
于 2012-08-09T16:16:12.557 に答える