2017-10-11 6 views
0

다음은 내가 원하는 것입니다.
사용자로부터 문자 (문자열 입력) 값을 저장하기 위해 크기가 15 인 문자 배열을 선언하십시오. 이제 다음 작업을 수행하십시오.char 형식 배열을 함수에 전달하고 첫 번째 char 배열을 두 번째 차트 배열에 복사하고 C++을 사용하여 비교하는 방법?

  • 함수 copy()에 배열을 전달하십시오.
  • 위 함수에서 같은 크기의 다른 배열을 정의하십시오. 첫 번째 배열의 값을 두 번째 배열에 복사하고 콘솔에 표시하십시오.
  • From 함수 Copy()는 두 배열을 모두 compare() 함수에 전달합니다. 이 함수에서 두 배열을 비교하고 조건이 충족되면 "Equal"메시지를 표시합니다. 여기

내 코드

#include "stdafx.h" 
#include <iostream> 
using namespace std; 
#include <iomanip> 
using std::setw; 

void mycopy(char array); 
int main(){ 
//Using Loop to input an Array from user 

char array[15]; 
int i; 
cout << "Please Enter your 15 characters" << endl; 
cout << "**************************************************" << endl; 
for (i = 0; i < 15; i++) 
{ 
    cin >> array[i]; 
} 

// output each array element's value 
cout << "Please Enter your 15 characters" << endl; 
cout << "**************************************************" << endl; 
cout << "Element" << setw(13) << "Value" << endl; 
for (int j = 0; j < 15; j++) { 
    cout << setw(7) << j << setw(13) << array[j] << endl; 
} 

mycopy(array[15]); 

return 0; 
} 

void mycopy(char array[15]) { 

char array1[15]; 
strncpy_s(array1, array, 15); 
cout << "The output of the copied Array" << endl; 
cout << "**************************************************" << endl; 
cout << "Element" << setw(13) << "Value" << endl; 
for (int j = 0; j < 15; j++) { 
    cout << setw(7) << j << setw(13) << array1[j] << endl; 
} 

}

상기 코드를 복사 (기능하는 배열을 통과) 및 제 2 문자 배열로 1 배열의 값을 복사 할 수있다 그러나 유효하지 않은 매개 변수가 전달되어 코드가 예외를 생성합니다. 스택 오버플로를 검색했지만 내 문제를 해결할 수있는 비슷한 질문을 찾지 못했습니다. 미리 감사드립니다.

+1

'main()'위에있는'mycopy()'의 프로토 타입 뒤에 세미콜론을 넣는 것을 잊어 버렸습니다. – Mark

+1

'*'을 잊어 버린 프로토 타입의'void mycopy (char * array)' – Tyger

+0

@Mark 감사하지만 이제 다른 오류가 발생합니다 –

답변

1

strncpy_s을 사용하지 마십시오. 비표준입니다. 대신 원래 있던대로 strncpy을 사용하십시오. 그것을 사용하려면 cstring을 포함해야합니다.

#include <cstring> 

mycopy()에 대한 프로토 타입 및 정의가 다릅니다. 프로토 타입은 char이지만 사용자의 정의는 char입니다. 둘 다 배열로 만듭니다. 다음 세 가지 중 하나를 동일하게 작동합니다 :

void mycopy(char* array); 
void mycopy(char array[]); 
void mycopy(char array[15]); 

당신이 15 인덱스 배열 액세스 함수에 그 문자를 전달하려고 mycopy()main()에서 호출합니다. 15 번째 인덱스가 범위를 벗어 났기 때문에 함수가 char이 아닌 char 배열에 대한 포인터를 사용하므로 잘못되었습니다. 배열에 포인터를 전달하면됩니다.

+0

확인해 보겠습니다. –

+0

내게도 같은 오류가납니다. 어설 션이 실패했습니다. –

+0

저에게 맞습니다. [this] (https://ideone.com/3DRNaY) 데모를 참조하십시오. – Mark