Преобразование массива char в объект NSString - PullRequest
10 голосов
/ 18 февраля 2012

В соответствии с моим заданием, я должен принять ввод от пользователя через консоль для использования с NSString.

На данный момент у меня есть

char* name[100]; // declaring char array
NSString* firstName; // declaring the NSString

printf("Please enter first name \n");
printf("=> ");
scanf("%s", &name);

firstName = [NSString stringWithCString:name encoding:NSASCIIStringEncoding];

Это работает,однако я получаю это предупреждение

Несовместимые типы указателей, отправляющие 'char [100]' параметру типа 'const char '

Я не знаюне хочу, чтобы эти ошибки появлялись в коде, я хотел бы также упомянуть, что я использую Xcode 4.2.

Может кто-нибудь объяснить мне почему я получаю этиошибки, и если я смогу их преодолеть?

Большое спасибо заранее!

Ответы [ 2 ]

12 голосов
/ 18 февраля 2012

Изменить это:

char* name[100];

до

char name[100];

Первая форма создает массив из 100 указателей на char. Второй создает массив из 100 char элементов. Что может сбить с толку, так это то, что name в последнем случае фактически является указателем, указывающим на первый из этих 100 char элементов.

4 голосов
/ 10 июля 2014

Как напечатано с NSLog назначается для инициализации строки NSSt.

NSLog(@"%s", arrayChar);
NSString *str = [NSString stringWithFormat:@"%s", arrayChar];
NSLog(@"Array to String: %@",str);
...