функция, которая возвращает строку - PullRequest
1 голос
/ 21 августа 2009

Глупо, как бы это ни звучало, я пытаюсь написать простую функцию в target-c, которая возвращает строку и отображает ее, следующий код почти работает, но я не могу заставить printf принять возвращаемое значение функции ...

NSString* getXMLElementFromString();

int main(int argc, char *argv[])
{
    printf(getXMLElementFromString());
    return NSApplicationMain(argc,  (const char **) argv);
}

NSString* getXMLElementFromString() {
    NSString* returnValue;
    returnValue = @"Hello!";
    return returnValue;
}

Ответы [ 3 ]

5 голосов
/ 21 августа 2009

NSString* не эквивалентно традиционной строке C, чего и ожидал бы printf.Чтобы использовать printf таким образом, вам нужно использовать API NSString для получения строки с нулевым символом в конце:

printf("%s", [getXMLElementFromString() UTF8String]);
2 голосов
/ 21 августа 2009

Вместо этого следует использовать NSLog(), который принимает строку (или строку формата) в качестве параметра.

Вы можете использовать либо

NSLog(getXMLElementFromString());

или

NSLog(@"The string: %@", getXMLElementFromString());

Где токен %@ указывает объект Objective-C (в данном случае NSString). NSLog() работает по сути так же, как printf(), когда дело доходит до форматирования строк, только он также примет маркер объекта.

1 голос
/ 21 августа 2009

Я не знаю, что printf может обрабатывать строку NSString. Попробуйте что-нибудь вроде:

 printf ("%s\n", [getXMLElementFromString()cString]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...