LINUX.ORG.RU

Как определить массив


0

0

Имеется указатель (*k) на память выделенный malloc.
Хочеться работать с этой памятью как с массивом k[x][100], то еть обращатся так
sprintf(k[10],"test");

как сказать на сях, что это память являеться массивом?

#include <stdlib.h>

int main(void)
{
int z,size=100000;
char *k;

k=(char*)malloc(size*100+1);
if (k==NULL) {printf("Can't allocate memory\n"); exit(-1);}

sprintf(k[10],"test");

return (0);
}


Никаких проблем, берешь и работаешь как с массивом, да это и есть массив.

sprintf(k[10],"test");

Здесь у тебя написано : записать в массив (k) с 10-ой позиции массив "test". адресация с 0

anonymous
()
Ответ на: комментарий от anonymous

Тогда позиционируйся на x*100

Но вообщето правильней делать так:

char **p = NULL;

main (){ int size = 10000; int i;

p = (char **)malloc (size);

for (i = 0; i < size; i++) p[i] = (char *)malloc (100);

sprintf (p[10], "test"); }

anonymous
()
Ответ на: комментарий от anonymous

Спасибо. Буду работать через указатели

anonymous
()
Ответ на: комментарий от anonymous

Тут ошибка p = (char **)malloc (size); нужно так p = (char **)malloc (size * sizeof(char *));

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.