arr (1) = HelloWorld를 추가하면 작동합니다!
하지만 arr (1) = Hello, world 또는 Hello_World 또는 Hello World를 추가하면
그렇지 않습니다!
내 코드의 일부가 아래에 포함되어 있습니다.
void CMFCApplicationFileDlg::OnClickBtnToData()
{
CString dataIn;
m_txtDataInput.GetWindowTextW(dataIn);
int dem = 0;
int check = 0;
CString mangMaHoa[] = { _T("A"), _T("B"), _T("C"), _T("D"), _T("E"), _T("F"), _T("G"), _T("H"), _T("I"), _T("J"), _T("K"), _T("L"), _T("M"), _T("O"), _T("P"), _T("Q"), _T("R"), _T("S"), _T("T"), _T("U"), _T("V"), _T("W"), _T("X"), _T("Y"), _T("Z") };
int num = arr[1].GetLength();
CString mahoa, chuoiSauMaHoa;
for (int i = 0; i < arr[1].GetLength(); i++)
{
mahoa = arr[1].Mid(i, 1);
dem = 0;
check = 0;
for (int j = 0; j < 26; j++)
{
if (mangMaHoa[j].CompareNoCase(mahoa) == 0)
{
check += 1;
if (j >= 23)
{
dem = j + 3;
dem = dem - 26;
}
else
{
dem = j + 3;
}
chuoiSauMaHoa += mangMaHoa[dem];
break;
}
else
{
continue;
}
}
if (check == 0)
{
chuoiSauMaHoa += mahoa;
}
}
m_txtDataOutput.SetWindowTextW(chuoiSauMaHoa);
}
if (check == 0)
{
chuoiSauMaHoa += mahoa;
}
나는 모든 캐릭터를 얻고 싶다
스크린 샷 :
미리 감사드립니다!
당신은 배열 mangMaHoa의 길이라고 생각하는 마법 번호 26에 많이 의존하고 있습니다.
그러나 실제로 길이가 25입니다 (문자 N을 생략 할 계획 이었습니까?).
그래서 특수 문자를 검색 할 때 오류가 특히 일어날되는 아웃 오브 바운드 ,
, _
및 space
.
어레이의 크기라고 생각하는 것을 가정하는 대신 방어적이고 어레이의 실제 크기를 결정해야합니다.
size_t alphabet = sizeof(mangMaHoa) / sizeof(mangMaHoa[0]);
대신 결과를 사용하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다