c ++ командная строка с системными вызовами - PullRequest
0 голосов
/ 21 марта 2012

Я пишу оболочку на c ++, и мне нужен конструктор для моего класса CommandLine, который анализирует команду из istream, а затем использует системные вызовы calloc () и free () для динамического создания переменных argc и argv. Я не понимаю, как использовать системные вызовы для этого, и ни один учебник не помог.

1 Ответ

1 голос
/ 21 марта 2012

Вот пример, очень похожий на то, что вы просите.Я нашел это здесь: http://www.cplusplus.com/reference/clibrary/cstdlib/calloc

функция calloc

void * calloc (size_t num, size_t size);

Выделение пространства для массива в памяти Выделениеблок памяти для массива из num элементов, каждый из которых имеет размер в байтах, и инициализирует все его биты нулем.

Эффективным результатом является выделение блока памяти, инициализированного нулями, (num * size)байт.

Параметры

num Количество элементов, которые должны быть выделены.size Размер элементов.

Возвращаемое значение Указатель на блок памяти, выделенный функцией.Тип этого указателя всегда void *, который может быть приведен к нужному типу указателя данных, чтобы быть разыменованным.Если функции не удалось выделить запрошенный блок памяти, возвращается указатель NULL.

Пример

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1920 21 22 * ​​1021 *

/* calloc example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int i,n;
  int * pData;
  printf ("Amount of numbers to be entered: ");
  scanf ("%d",&i);
  pData = (int*) calloc (i,sizeof(int));
  if (pData==NULL) exit (1);
  for (n=0;n<i;n++)
  {
    printf ("Enter number #%d: ",n);
    scanf ("%d",&pData[n]);
  }
  printf ("You have entered: ");
  for (n=0;n<i;n++) printf ("%d ",pData[n]);
  free (pData);
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...