Как инициализировать массив char * const с записями, которые не являются литеральными? Записи поступают со стандартного ввода. Я попытался
char * const args[2] = (char * const *)calloc(2,1025);
sscanf(command,"%s %s ",args[0],args[1]);
/*args will be used later*/
и получил «неверный инициализатор», если приведение не было там, и «приведение указывает тип массива», если приведение было там. И если бы я вообще избежал callo c, то обе записи аргументов оказались бы нулевыми. Кажется, что независимо от того, что я делаю, массив типа char * const не может быть заполнен значениями после того, как он объявлен.
Редактировать: Вот моя следующая попытка
char **args = (char **)calloc(1025,3);
/*Section A start*/
strcpy(args[0],(char*)"the");
strcpy(args[1],(char*)"thethe");
/*Section A end*/
sscanf(command,"%s %s ",args[0],args[1]);
Загадка что код является блоком кода следующим образом. Если я не включаю раздел A, то аргументы args [0], args [1] неверно равны нулю после sscanf (очевидно, sscanf плохо работает с нулевыми переменными). Если я включу раздел A, я получу ошибку по разделу A. Так что, похоже, я сбит с толку, независимо от того, в каком направлении я поверну. Возможно, есть альтернатива, некоторая секция B, которая дает однозначные значения args [0], args [1], чтобы они могли находиться в ненулевом состоянии, когда на сцене появляется sscanf.