2013-12-11 2 views
1

В основном это программа меню с переключателем. Я хочу ввести строковые функции перед частью меню, чтобы сохранить его. Моей главной проблемой на данный момент является случай 4. То, что я пытаюсь сделать, это сделать функцию, которая преобразует целую строку в верхний регистр. Но я не могу найти способ применить его к введенной строке. Он работает только в том случае, если я определяю заданную строку.Меню коммутатора и nsstring в верхнем регистре

const int CSTR_MAX = 33;   

void readCString(char cs[]) 
{ 
printf("Enter a character string up to %i characters: ", CSTR_MAX-1); 
scanf("%s", cs); 
} 


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

    char cstr[CSTR_MAX]; 
    int choices; 
    BOOL done=FALSE;   
    NSString *obj; 
    NSString *uppercase = (Imnotsurewhatneedstogohere); 
    NSString *lowercase; 

    readCString(cstr); 

    do { 
     //Print the menu and prompt the use for the selection 
     printf("\nMenu Choices\n"); 
     printf("------------\n"); 
     printf("1) Enter a new string\n"); 
     printf("4) Change all letters to Upper Case\n"); 
     printf("5) Change all letters to lower case\n"); 
     printf("8) Quit"); 
     printf("\nEnter your choices: "); 
     scanf("%i", &choices); 


     switch(choices) 
     { 
      case 1: 
       //Enter a new String 
       readCString(cstr); 

       break; 

      case 4: 
       //Change all letters to Upper Case 
       obj = [uppercase uppercaseString]; 
       NSLog(@"Uppercase conversion: %s", [uppercase UTF8String]); 
       break; 

      case 5: 
       //Change all letters to lower case 
       obj = [lowercase lowercaseString]; 
       NSLog (@"Lowercase conversion: %@", obj); 
       break; 



      case 8: 
       //Quit 
       break; 
      default: printf("You entered an invalid choice\n"); 
       done = TRUE; 

     } 

    } while (!done); 

} 
return 0; 
} 
+0

Вы можете разобрать этот вниз соответствующий код и четко разъяснить, что это такое, что не работает? – nhgrif

+0

add int counter counter = 0; while (cstr [counter]! = '') { if (cstr [counter]> 96) cstr [counter] = cstr [counter] - 32; counter ++; } printf ("% s \ n", cstr); – shockwav3

ответ

0

Я думаю, что причина, почему вы столкнулись с этой проблемой, потому что вы NSLoging [uppercase UTF8String], которые вы никогда не установить новое заглавное значение. Вы должны использовать NSLog(@"Uppercase conversion: %s", [obj UTF8String]);, потому что obj задано в верхнем регистре или переименовывает переменные.

Так случай 4 должен выглядеть следующим образом:

case 4: 
       //Change all letters to Upper Case 
       obj = [uppercase uppercaseString]; 
       NSLog(@"Uppercase conversion: %s", [obj UTF8String]); 
       break; 
+0

Правильно, ну, я пытаюсь установить значение верхнего регистра на введенную строку. так что, когда строка вводится и выбирается опция, она будет содержать всю строку в верхнем регистре. Но я не уверен, какой должна быть ценность для этого. – shockwav3

+0

@ shockwav3 Я отредактировал мой ответ, пожалуйста, перечитайте. – atomikpanda

+0

ах, это помогает. Как вы думаете, я должен установить NSString * uppercase = что-то или нет? – shockwav3

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