2014-12-24 5 views
-3

나는 몇개의 문자열을 입력하고 문자열의 길이를 비교하기 위해 코드를 작성한 다음 더 짧은 문자열을 콘솔 출력에 인쇄합니다. 그러나 코드가 예상대로 작동하지 않고 입력을 받으면 빈 화면이 출력됩니다 (문자열이 표시되지 않음). 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?코드가 예상대로 작동하지 않는 이유는 무엇입니까?

input 배열은 사용자가 제공하는 문자열을 갖고, 라인 (string[i] == a[j])이 a의 특정 값에 대해 참으로 실행되도록 이러한 문자열은 a도 존재한다.

#include <iostream> 
#include <string.h> 
using namespace std; 

int main() 
{ 
    long n, m; 
    cin >> n >> m; 
    char a[m][10], b[m][10]; // will print the shorter out of these two 
    for (long i = 0; i < m; i++) cin >> a[i] >> b[i]; 
    char input[n][10]; 
    for (long i = 0; i < n; i++) cin >> input[i]; 
    for (long i = 0; i < n; i++) 
    { 
     for (long j = 0; j < m; j++) 
     { 
      if (input[i] == a[j]) // checks which set of a,b does this input correspond to 
      { 
       if (strlen(a[j]) > strlen(b[j])) cout << b[j]; 
       else cout << a[j]; 
       if (i < n - 1) cout << " "; 
      } 
     } 
    } 
} 

코드 (input[i] == a[j])에 문제가있는 것 같지만 잘 모르겠습니다.

input[i] == a[j] 

그것은 두 포인터 아닌 문자열을 비교한다

+5

이것은 C++ 질문으로 태그 되었기 때문에'std :: string'을 사용하지 않는 이유가 무엇입니까? – Adam27X

+1

귀하의 제목이 "투표 종료"이유 중 하나와 정확히 일치합니다 .... – ravi

+0

.. 왜냐하면 당신은 그것을 디버깅하지 않았기 때문입니다. 디버깅을했다면, 당신이 발견 한 것을 우리에게 말했을 것입니다, 그렇죠? –

답변

관련 문제