두 C 스타일 문자열에서 대소 문자를 구분하지 않는 strcmp를 수행하려고합니다.C 스타일 문자열에 대해 아래쪽으로
C 스타일 문자열을 소문자로 변환하는 기능이 있습니다.
char* ToLowerCase(const char* str)
{
char buffer[strlen(str)];
for (int i=0; i<strlen(str); ++i)
buffer[i] = char(tolower(str[i]));
return buffer;
}
한 문자열 함수 숯 *의 GetMyString (Ⅰ INT)에서 유래하고, 두 번째는 char C 스타일 스트링 어레이에 myStrings * [5].
그래서 가정 모두 GetMyString (0)와 mystring에 [0] 모두 복귀 "TEXT"strcmp(ToLowerCase(GetMyString(0)), ToLowerCase(myStrings[0]));
는 "mytextxaogs5atx" "mytextxabs5atx"와 같은 문자열을 비교한다 (어떤 임의의 텍스트가 더해진다 ...)
그 난 당신 중 일부는 생각으로 널 종료와는 아무 상관이 없다 가정 있도록 동안strcmp(GetMyString(0), myStrings[0]);
, 그냥 잘 작동합니다.
내 코드가 잘못되었습니다. 내가 뭐 놓친 거 없니? 나는 tolower에 관한 많은 질문을 보았지만 그들 중 누구도 내 문제를 도울 수 없었다.
당신은 정의되지 않은 행동을합니다. 그 이유가 있습니다. –
심각한 프로젝트에서 이러한 기능을 사용해야하는 경우에는 부스트 라이브러리로 이동하여 다른 문자 집합 문제가 발생하지 않도록하십시오. – seccpur
반환 후에 버퍼가 반환되지 않습니다. 무엇이'char (tolower (str [i]))'를 의미합니까? 'tolower (str [i])'충분해야한다. – Holger