2014-11-19 2 views
0

Я пытаюсь попросить пользователя ввести свое имя, а затем вернуться; «Привет и их имя». Я знаю его что-то простое, чего мне не хватает, но я просто не знаю, что это такое.Запросить информацию для пользователей и вернуть эту информацию

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 

     NSString * name = @""; 

     NSLog(@"What is your name?"); 
     scanf("%@", &name); 

     NSLog(@"Hello %@",name); 

    } 
} 

ответ

1

Вы пытаетесь использовать Objective-C и C здесь. Это несколько сложно сделать, но позвольте мне посмотреть, могу ли я помочь вам указать правильное направление.

Во-первых, изменение:

NSString * name = @""; 
scanf("%@", &name); 

к:

char name[64]; 
scanf("%s", &name); 

и посмотреть, что работает лучше.

scanf is a C function that works with c types, а NSString - объективный объект C, который на самом деле не работает с «scanf».

(«64» означает, что имеется достаточно места для буфера на 64 символа, и если вы пропустите это, приложение, скорее всего, потерпит крах).

Кроме того, изменение:

NSLog(@"Hello %@",name); 

к этому:

NSLog(@"Hello %s",name); 

Как "%s" в формате говорит NSLog, что вы передаете строку C-стиль, а не объект NSString.

+0

Он работал, спасибо! – unlimited4311

0

Вы используете объект NSString в C, который не работает. scanf ожидает строку C. Вот пример:

NSLog(@"What is your name?"); 
char name[40]; 
scanf("%s", name); 
NSLog(@"Hello %@",[NSString stringWithCString:name encoding:NSUTF8StringEncoding]); 

Или вы можете остаться на 100% в C:

printf("What is your name?"); 
char name[40]; 
scanf("%s", name); 
printf("Hello %s", name); 
Смежные вопросы