2017-03-29 6 views
0

I 정수 2, 3, 4의 배열을 변환하고자 8 5, 7, 9에 첨부 된 그 행렬의 항목의 문자열 12 1, 0, 6, 10Char Point C++ String의 참조 주소에 메모리 할당?

시계 방향으로 "2, 3, 4, 8, 12, 10, 6, 0, 1, 5, 7, 9"

나는 int * Matrixchar * OutBuffer의 I 선언 그들이

int main() 
{ 
    int matrixArray[rowCount][columnCount] = 
    { {2, 3, 4, 8}, 
     {5, 7, 9, 12}, 
     {1, 0, 6, 10}}; 

    int * matrix; 
    string prebuffer; 
    char * outBuffer; 

    outBuffer = new (nothrow) char[24]; 
    matrix = &matrixArray[0][0]; 

    BuildStringFromMatrix(matrix, rowCount, columnCount, outBuffer); 
} 

있는 방법을 선언을 유지하고 그들을 전달하기 전에 내 모든 포인터를 해결해야합니다. 그러나, 나는 할당에 대해 갈거야 확실하지 않다 outBuffer에 대한 메모리가 사전 버퍼의 문자를 올바르게 저장합니까?

void BuildStringFromMatrix(int* Matrix, int NumRows, int NumColumns, char * OutBuffer) 
    { 
     string prebuffer; 
     bool stringLeft = true; 
     int i = 0; 

     while (stringLeft) 
     { 
      int clockwiseDir[12] = { 1,1,1,4,1,1,0,4,-4,-1,-1,-1 }; 

      prebuffer = to_string(Matrix[i]) + ", "; 
      OutBuffer = new char [prebuffer.length() + 1]; 
      cout << prebuffer; 
      i += clockwiseDir[i]; 

      if (i == 6) 
      { 
       prebuffer = to_string(Matrix[i]) + " "; 
       cout << prebuffer; 
       stringLeft = false; 
      } 
     } 
    } 

** 내가 액세스하고 시계 방향으로 형식

의 매트릭스를 인쇄 아무런 문제가 없다하지만 어떻게 OutBuffer가 참조하고 인쇄 미리 버퍼링하는 내용을 사용하는 방법에 대한 갈 것이라고 OutBuffer를 구현하지? 난 당신이 어디서든 내가 값을 사용하지 않는 BuildStringFromMatrix 기능에서 루프에서, 숫자가 **

+0

'행렬 [j]는 물론'i'에 대해 아무것도 모르기 때문에 두 번째 행으로 이동할 수 없습니다. –

+0

배열을 2D 문자 배열로 원하십니까? 또는 단일 문자열 변수에서? –

+0

코드 및 문제점을 [mcve]로 줄여야합니다. 예를 들어, 단일 'int'를 문자열로 변환 해보십시오. [작은 프로그램을 디버깅하는 방법] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)을 참조 할 수도 있습니다. –

답변

-3

첫째 : 사전에 ASCII 테이블에

감사를하지 인쇄 할 수없는 문자를 표시해야합니다. 둘째, matrix = matrixArray가 잘 수행되어야합니다.