PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2013/12/25 23:36:36
Name 히페리온
Subject [질문] c언어 관련 질문드리는데요.
        char str1[1024];
        char str2[1024];
        int i = 0, len;
        cout << "문장을 입력하세요. ";
        cin >> str1; //aba

        cout << "문장의 길이를 입력하세요. ";
        cin >> len; //3

        len = strlen(str1);
        cout << "문자열 길이: "<< len << endl;

        while(str1[i] != NULL)
        {
                str2[i] = str1[len-1-i];
                i++;
        }
        str2[i] = NULL;
        cout << str1 << endl;
        cout << str2 << endl;

        if(str1 == str2)
        {
                cout << "회문 입니다." << endl;
        }
        else
        {
                cout << "회문이 아닙니다." << endl;
        }
-----------------------------------
입력(str1)을 aba 했을 때 출력(str2)도 aba가 나오면 if 첫 번째꺼를 실행하고 아니면 else로 실행하는 건데요. 이상하게 else로만 가네요. 처음에 aba 입력하면 str1에 aba, str2에 aba 들어가서 str1 == str2기 때문에 if 첫 번째꺼가 실행되어야 할텐데 안되네요. 뭐가 잘못 됐을까요?

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
RedDragon
13/12/25 23:49
수정 아이콘
if(str1 == str2) 를 if( (strcmp(str1,str2)) == 0 ) 으로 바꿔서 해보세요.
문자열 비교는 단순 == 가 아닌, strcmp를 쓰셔야 할 거에요~
히페리온
13/12/26 00:22
수정 아이콘
고맙습니다. strcmp는 안 쓸려고 했는데 썼네요.~
Lucky-Strike
13/12/26 00:02
수정 아이콘
if문 들어가기전에 i값을 확인해보시고 str1과 str2의
배열의 각각 인덱스에 동일하게 내용이 들어가있는지 확인해보세요.
그리고 len의 값이 제대로 들어오는지도 확인해보세요.
13/12/26 03:16
수정 아이콘
str1 == str2 는 순전히 각각의 주소값 비교입니다.
문자열을 서로 맞춰보는게 아니라요. 아무리 똑같이 문자를 입력해도 주소값이 다르니 계속 else로 가게되겠죠.
13/12/26 09:12
수정 아이콘
strcmp 쓸 필요 없죠. 처음에 str2로 넣는 과정을 생략하고 바로 비교를 하면 되죠.
보통 이러한 경우는 1/2만 돌면서 비교하면 되기 때문에 while 문보다는 for 문을 많이 씁니다.
처음에 길이도 입력 받았겠다 딱 좋은 상황이네요.(근데 문장 길이 입력 받아놓고 strlen을 또 하네요..)
(len이 홀수가 되어도 가운데의 문자는 비교안해도 되기 때문에 로직상 문제 없습니다.)

bool isCircular = true;
for (i = 0 ; i < len / 2 ; i++) {
  if (str1[i] != str1[len - i - 1]) {
    isCircular = false;
  }
}

if (isCircular) { //회문
} else { // 회문 아님
}
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
175348 [질문] 나무위키에서 최근에 작성이나 편집된곳을 알 수가있나요? [2] 라리544 24/03/15 544
175347 [질문] 이탈리아로 신혼여행을 가려는데, 여행사가 해주는게 없네요. [34] 리들2373 24/03/15 2373
175346 [질문] 티빙 KBO중계 PC브라우저로 볼때 오른쪽 탭 없에는 방법 없나요? [3] 파쿠만사616 24/03/15 616
175345 [질문] CPU 5600 → 5700X3D 체감이 될까요? [10] 탄야1196 24/03/15 1196
175344 [질문] 서울 주차 가능한 비건 한정식 식당 추천 부탁 드립니다. [2] 땅과자유792 24/03/15 792
175343 [질문] 헬 다이버즈2 로컬? 멀티? [3] 찬양자784 24/03/14 784
175342 [질문] 통계분석을 전문적으로 해주는 기관이 있을까요? [5] 쌍둥이아빠1145 24/03/14 1145
175341 [질문] 한국의 법원도 영미권처럼 개인에게 부작위를 명령할 수 있나요? [4] 칭찬합시다.1218 24/03/14 1218
175340 [질문] 플립5에서 폰변경을 하고싶습니다 [7] 아이유IU831 24/03/14 831
175339 [질문] 아이 데리고 동남아 여행은 패키지로 가는게 일반적인가요? [22] 아스날1344 24/03/14 1344
175337 [질문] 더빙방송 좋은 게임 추천해주세용! [2] Janzisuka608 24/03/14 608
175336 [질문] 카카오 벤티 예약하면 시간 맞춰서 잘 오나요? [3] Alfine1094 24/03/14 1094
175335 [질문] 고전 무협게임인데...못찾겠어요 [21] Janzisuka1277 24/03/14 1277
175334 [질문] 장기, 스타처럼 동등한 조건으로 시작해서 1:1로 붙는 모바일 게임이 뭐가 있을까요? [8] 인천테란1114 24/03/14 1114
175333 [질문] 핸드폰 추천 부탁드립니다. [6] 계층방정685 24/03/14 685
175332 [질문] 윈도우 이미지 OCR 인식 복사 방법 질문 [8] 아테스형688 24/03/14 688
175331 [질문] 지금 현금 1억이 있다면? [35] deadbody2577 24/03/14 2577
175330 [질문] 최수종은 왜 영화를 안찍을까요?? [8] 아오이소라카2834 24/03/14 2834
175329 [질문] 노트북 140W C타입 충전이라고 써있으면 그냥으로는 충전이 안되나요? [9] 개념은?1102 24/03/14 1102
175327 [질문] BQ?? 가 무슨 뜻일까요? [10] 정 주지 마!1949 24/03/14 1949
175326 [질문] 사회초년생 신용카드를 만들려고 합니다. [16] 오하영1496 24/03/13 1496
175325 [질문] 텔레그램 질문 쏘군479 24/03/13 479
175324 [질문] 외장 하드연결 문제 [1] The Unknown A410 24/03/13 410
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로