NSString을 대문자로 변환하는 중 스레드 중단 점 오류가 발생합니다. 질문의 대문자를 대문자로 설정하여 사용자가 아니요, 아니요, 아니요를 입력하고 내부적으로 NO로 바꿀 수 있도록하고 싶습니다. 나는 그것이 0이나 1을 요구할 수 있다는 것을 안다.하지만이 방법을 사용하는 것이 훨씬 더 사용자 친화적이다. 디버그 모드가 켜져 있는데, 이렇게하면 더 간단한 데이터를 얻을 수 있습니다. [string uppercaseString] 줄에 스레드 중단 점이 생깁니다. 출력을 위해 처음 예상 된 디버거 메시지가 표시되지만 두 번째 메시지가 표시되기 전에 프로그램이 중지됩니다.NSString을 대문자 스레드 중단 점으로 바꾸기
#define DEBUG 1
NSLog(@"Do you have an account already? YES or NO.");
char yesOrNo [20];
fgets (yesOrNo, sizeof yesOrNo, stdin);
int c;
while ((c = getchar()) != '\n' && c != EOF);
if (yesOrNo [strlen(yesOrNo) - 1] == '\n') { //In case the input string has # characters plus \n
yesOrNo[strlen(yesOrNo) - 1] = '\0';} //Plus '\0', the '\n' isn't added and the if condition is false
NSString *string = [NSString stringWithUTF8String:yesOrNo];
#ifdef DEBUG
NSLog(@"DEBBUGER MESSAGE: string == %@", string);
#endif
NSString *stringUppercase = [string uppercaseString];
#ifdef DEBUG
NSLog(@"DEBBUGER MESSAGE: stringUppercase == %@", stringUppercase);
#endif
왜'는 fgets를 사용하는 거에요 '*와 *'getchar'? –
fgets는 사용자 입력 용이며 getchar는 각 사용 후에 표준 입력을 플러시하는 행의 일부입니다. 나는 c-faq.com에서 얻었는데, 나는 이전처럼, 표준 입력을 플러싱하는 데 문제가있는 나 같은 사람들을 위해 계속해서 공유하고있다. –