2013-02-27 3 views
-1

Я не могу заставить вход/выход работать правильно. Пожалуйста помоги.Могу ли я использовать scanf для строк?

Вот мой код ...

char choice1; 

    printf("This is a text game! You will be shown what is going on"); 
    printf("\nand it is up to you to decide what to do."); 

    printf("\n\nThere is a gem on the ground."); 
    printf("\nWhat do you want to do"); 
    printf("\n>"); 


    scanf("%c", &choice1); 

    if (choice1 == pick up gem) { 
     printf("Got Gem"); 
    } 
+4

«Кто-нибудь теперь, как сделать текстовую приключенческую игру в объективе-c?» -Да. – 2013-02-27 22:50:46

+0

Что такое 'pick gem'? Строка темы не имеет большого значения для вашей проблемы. – Mahesh

+0

Возможно, вам нужно отменить входные слова? –

ответ

3

%c для ввода одного символа, а не строка. Если вы хотите, чтобы позволить пользователю вводить более одного символа, то вам нужно что-то вроде:

char string[256]; 
fgets(string, 255, stdin); 

if (strcmp(string, "pick up gem\n") == 0) { 
    printf("Got Gem"); 
} 

BTW - это не Objective-C, это C.

И плохие вещи будут происходить, если пользователь вводит более 256 символов.

Обновление: Оказывается, что scanf захватывает только первое слово ввода. Использование fgets читается в новой строке.

+0

Хорошо, спасибо, но будет ли это работать в объективе-c? Aslo я попытался использовать строку для ввода, но я не могу найти scanf% для строк. – codegeek511

+0

Что вы подразумеваете под "string"? C-строка, как я использовал в своем ответе (с '% s') или Objective-C (действительно Cocoa)' NSString'? И да, поскольку Objective-C является надмножеством C, этот код отлично работает в Objective-C. – rmaddy

+0

by string Я имею в виду, что NSString blah blah blah, а затем scanf («% then, то что должно идти дальше». – codegeek511

Смежные вопросы