strcmp를 사용하는 방법을 이해하는 데 어려움을 겪고 있습니다. equals() 함수에 전송되는 문자열에 대한 변경 사항이 테스트 1a - 1d의 결과에 영향을 미치지 않는 것처럼 보입니다. 함수 호출 앞에 감탄 부호의 목적은 무엇입니까? 이 프로그램의 목적은 문자열이 동일한 길이와 같은 경우 "올바른"문자열을 비교하는 것입니다. 다음 코드는 내 교수가 제공했습니다. 나는 equal() 함수와 함수 프로토 타입 안에있는 것만 바꿀 수있다. 접두사 단항 연산자로서 사용될 때함수에서 strcmp를 올바르게 사용하는 방법
#include <iostream>
#include <cstring>
#include <cctype>
using std::cin;
using std::cout;
using std::endl;
bool equals(const char*, const char*);
int main()
{
// Tests 1a - 1d: Test the equals() function
cout << "Test 1a: ";
if (equals("catapult", "catapult"))
cout << "correct\n";
else
cout << "incorrect\n";
cout << "Test 1b: ";
if (!equals("catapult", "catamaran"))
cout << "correct\n";
else
cout << "incorrect\n";
cout << "Test 1c: ";
if (!equals("cat", "catamaran"))
cout << "correct\n";
else
cout << "incorrect\n";
cout << "Test 1d: ";
if (!equals("catapult", "cat"))
cout << "correct\n";
else
cout << "incorrect\n";
cout << endl;
return 0;
}
bool equals (const char* str1, const char* str2)
{
if (strcmp(str1, str2) == 0)
return true;
return false;
}
이것은 C++에서'strcmp'를 올바르게 사용하는 방법입니다. 1 단계 :'char const * '의 모든 항목을'std :: string'으로 바꾸십시오, 2 단계 :'strcmp'의 모든 항목을'==' . – user657267
'!'는 논리적 연산자가 아니며'false' 다음을'true'로,'true'를'false'로 변경합니다. 그래서'! true''==''false','! false'' ==''true''입니다. '! equals (x, y)'는 "not (equals (x, y))"또는 - 영어로 의역 어구 - "x는 y와 같지 않음"을 의미합니다. –
"문자열이 같은 길이와 같은 경우"- 이것은'strcmp'가 ... 같은 것을 비교하기 위해 테스트하는 것과 같지 않습니다. 길이가 같아야하고 모든 문자가 정확히 일치해야합니다 ... 같은 위 또는 소문자만으로는 충분하지 않습니다. –