다른 함수에 char [] 전달하려고하지만 어떤 이유로 나는 이상한 출력 계속하지만 오류가 있습니다. 내가 밖으로 인쇄를 얻어야한다다른 함수에 char [] 전달할 때 이상한 출력
void storeKey()
{
char keyArray[10];
cout << "Please enter 10bit key" << endl << "==> ";
cin >> keyArray;
storePlaintext(keyArray);
cout << keyArray << endl;
}
void storePlaintext(char key[])
{
char plaintextArray[8];
cout << "Please enter 8bit plaintext" << endl << "==> ";
cin >> plaintextArray;
cout << plaintextArray << endl << key[1] << endl;
//cout << plaintextArray << endl << key << endl;
}
: 나는 다음과 같은 방법이 1111111111 다음에 다음 줄에 00000000와 1111111111을하지만 난 후 "C"가 (또는 뭔가 랜덤) 111111111. 왜 다음에 0000000를 얻을 수 이 일이 일어 났습니까? 내가 아무 문제없이 잘하고있는 것처럼 배열을 전달할 수 있어야합니까? 함수에서 함수로 배열을 전달하고 그 내부의 데이터를 사용할 수 있어야합니다. 어떤 도움을 많이 주시면 감사하겠습니다. 감사합니다.
배열의 길이가 10 문자 인 경우 null 종결 자에 대해 10 번째 자리가 필요하므로 정의되지 않은 동작을 발생시키지 않고 9 자 이상을 저장할 수 없습니다. 따라서'1111111111'을 출력하면 프로그램이 정의 된 방식으로 처리 할 수있는 것보다 긴 문자열을 입력하여 UB를 트리거 한 것을 나타냅니다. – cdhowie
'std :: string'을 사용하십시오. 버퍼 오버 플로우는'std :: string'이 모두 해결하는 문제입니다. – chris
std :: string을 사용하지 않았고 원하는 크기에 너무 가깝게 배열을 선언하지 않아도 오류가 발생하지 않습니다. 배열을 50 자로 선언했다면 문제가 발생하지 않을 것입니다 (그러나 여전히'std :: string'을 사용하고 모든 이슈는 사라집니다). – PaulMcKenzie