2016-09-05 17 views
1

안녕하세요 저는 동적 인 미로를 만들려고합니다. 제가 크기를 얻고 그곳에서 미로를 만드는 데 필요한 문자를 얻는 부분에 도착했습니다. 하지만 미로 빌드 기능은 정말 비대칭인데 어떻게 수정해야합니까?함수가 C에서 올바르게 작동하지 않습니다

내 코드 :

#include <stdio.h> 
    #include <stdlib.h> 

char **board; 
int size = 0; 

void print_Board(); 
void initialize_Board(); 

int main() 
{ 
    initialize_Board(); 
    print_Board(); 

return 0; 
} 

/*initialize the board*/ 
void initialize_Board() 
{ 
    int i, j;//indexs 
    char s; 
    scanf("%d", &size); 

board = (char**)malloc(sizeof(char*)* (size)); 
if (!board) { printf("ERROR - memroy allocation.\n"); exit(1); } 

for (i = 0; i < size; i++)//for loops to build the board for the game 
{ 
    board[i] = (char*)malloc(sizeof(char)*(size));        
    if (!board[i]) { printf("ERROR - memroy allocation, for loop\n"); 
     exit(1); 
    } 

    for (j = 0; j < size; j++) 
    { 
     scanf("%c", &s); 
     board[i][j] = s; 
    }//for col 

    printf("\n"); 

    }//for row 
} 

//print the board 
void print_Board() 
    { 
    int i, j; 

for (i = 0; i < size; i++) 
    { 
     for (j = 0; j < size; j++) 
     { 
     printf("%c ", board[i][j]); //print the value in the [i][j] place. 
     }//for col 

     printf("\n"); 

     }//for row 
} 
+3

샘플 출력을 게시하는 마인드? –

+0

[MCVE] (http://stackoverflow.com/help/mcve)를 게시하는 것으로 간주 되셨습니까? – Mirakurun

+2

하나의 추측은 각 행 다음에 Enter 키를 누르면'scanf '에 의해 추가 문자로 읽히는 것입니다. –

답변

0

변경 :

for (j = 0; j < size; j++) 
{ 
    scanf("%c", &s); 
    board[i][j] = s; 
}//for col 

사람 :

for (j = 0; j < size; j++) { 
    scanf("%c ", &s); 
    board[i][j] = s; 
}//for col 
board[i][j] = '\n'; // Add new line to end of row making it a string. 

이 각 문자를 읽을 및 반환 문자가 삭제되도록합니다.

변화 :

int i, j; 
for (i = 0; i < size; i++) 
{ 
    for (j = 0; j < size; j++) 
    { 
     printf("%c ", board[i][j]); //print the value in the [i][j] place. 
    }//for col 

    printf("\n"); 

}//for row 

행이 최종 개행 각 행을 출력

int i; 

for (i = 0; i < size; i++) { 
    printf("%s", board[i]); //print the values in the [i] row. 
} 

.