Массив с массивами символов - PullRequest
0 голосов
/ 11 мая 2018

Я хочу создать массив с malloc, а затем присвоить полям массива вывод fgets.

char *words;
words = (char *)malloc(lines*sizeof(char));
int k = 0;
words[k] = (char *)malloc(mysize*sizeof(char));

Это не будет работать из-за отсутствующего указателя, я полагаю.Что я могу сделать?

1 Ответ

0 голосов
/ 11 мая 2018

Я хочу создать массив с помощью malloc, а затем присвоить полям массива вывод fgets.? Тогда, мы надеемся, вы должны объявить words как двойной указатель или массив указателей на символы.

Один из способов - использовать массив указателей на символы , как показано ниже.

char *words[lines]; /* array of pointer, lines is nothing but number of line in file */
for(int row = 0;row < lines; row++) {
    /* allocate memory for each line */
    words[row] = malloc(mysize);/* mysize is nothing but lines has max no of char i.e max no of char */
    /* now read from file */
    fgets(word[row],mysize,fp);/* reading from file(fp) & store into word[0],word[1] etc */
}

Или вы также можете использовать двойной указатель, например char **words;.

И как только работа завершена, наконец, не забудьте освободить динамически выделенную память.

...