私の知る限り、標準のstrcmp関数は次のようになります。
int strcmp(const char* string1, const char* string2)
{
while(*pString1++ == *pString2++)
{
if(*pString1 == 0) return 0;
}
return *pString1 - pString2;
}
私の質問は、これはstrcmpに渡されるポインターをインクリメントしないのでしょうか?次の例では、ポインタが破棄され、無効な処理が発生するようです。
const char* string1 = "blah";
const char* string2 = "blah";
const char* string3 = "blah";
if(strcmp(string1, string2) {doSomething();}
// Won't this make string1 = "" because it incremented the pointer to the end?
else if (strcmp(string1, string3) {doSomethingElse();}
申し訳ありませんが、strcmpにポインタを渡した場合、そのポインタが突然空の文字列を保持することを期待するべきではないように思われるため、混乱しています。strcmpはconstchar*constを取る必要があるようです。私は完全に何かを誤解していますか?