2016-11-25 3 views
-1

2 차원 배열의 일부를 1D 문자열로 덮어 쓰는 프로그램이 알고리즘의 필수 요소입니다. 다음과 같이 덮어 쓰기를 할 예정이다1D 문자열을 2D 배열 요소로 복사

부분은 다음과 같습니다 twoDtop 글로벌 변수 변수는

char twoD[MAX][MAX]; 
int top=2; 

int main(){ 
    char arr[MAX]; 
    func(arr); 
} 

void func(char newArr[]){ 
    strcpy(twoD[++top], newArr); 
} 

.

프로그램이이 부분에 도달하면 충돌합니다.

int main() { 
    char arr[MAX] = "HELLO"; 
    func(arr); 

    printf("%s\n", twoD[3]); 
} 

가 출력 될 것입니다 :

Hello 

면책 조항 : 코드 그게 전부 확인되지 않은 오류가 데모 용으로 만 제공이됩니다

+0

무엇이 오류입니까? 예상되는 입출력은 무엇입니까? – Carcigenicate

+2

'MAX'란 무엇입니까? 'MCVE'를 보여주세요. –

+0

오류 : "프로그램이 작동을 멈췄습니다." 예상되는 입력 : (5 + 3) * (7-3). –

답변

0

당신은 arr

이 시도 초기화되지 않았습니다 .

2

배열 경계를 관리하십시오.

char twoD[MAX][MAX]; 
int top=2; 

int main(){ 
    char arr[MAX] = ""; //Initialize the string. 
    func(arr); 
} 

void func(char newArr[]){ 
    if(++top < MAX) //Check if top has reached MAX. 
    { 
     strncpy(twoD[top], newArr, MAX-2); //At max copy string of length (MAX-2)+'\0'. 
     twoD[top][MAX-1] = '\0'; 
    } 
}