Извините, я даже не знаю, как спросить, так как я полный новичок в C, указатели и тому подобное. Есть функция, которая принимает аргумент: char **arg
. Если я пишу этот аргумент так:object-c nsarray to c array
char *cargs[] = {"blah", NULL};
и передать его функции:
function(cargs);
это работает. но ... У меня есть NSArray
из NSStrings
, и мне нужно сделать этот массив вне значений от NSArray
. Я решил, что нужно создать массив C из того же элемента, что и NSArray
, и скопировать строки, конвертируя их с cStringUsingEncoding
. Но я честно понятия не имею, как это сделать, так как я запутался со всеми этими указателями и тому подобное. Любая помощь будет оценена по достоинству.
Зачем посылать' lengthOfBytesUsingEncoding: '' cStringUsingEncoding:. 'Автоматически создаст строку нужной длины, на самом деле, вы не можете сказать ему, чтобы использовать другую длину –
Ну, я бы рад избежать этого, но я использую AuthorizationExecuteWithPrivileges для запуска сценария оболочки с повышенными привилегиями, и я не знаю другого способа это сделать. – Marius
char * arg; \t arg = (char *) malloc ([a count ] + 1); \t \t для (INT I = 0; г <[счетчик]; я ++) { \t \t \t arg [i] = [[a get: i] cStringUsingEncoding: NSUTF8StringEncoding] [0]; \t} \t \t arg [[a count]] = 0; Это то, что я придумал с помощью моего друга, но он разбивает AuthorizationExecuteWithPrivileges ... Как мне отформатировать код в комментарии? :( – Marius