だから私は次のテストコードを持っています:
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]){
int retVal = strcmp("", "");
printf("%d\n", retVal);
return 0;
}
そして私にとって、それは常に0を出力するように見えます。つまり、""と""は常に互いに等しいです。しかし、私は興味があります。これはstrcmpによって保証されているものですか、それとも実装ごとに異なる可能性がありますか?たぶん私はただ妄想しているだけですが、さまざまな実装の危険性を知るのに十分な奇妙なシステムに取り組んできました。
更新:私は自分の妄想を正当化するために明確にすることにしました。私が自分のプログラムで実際に行っていることは、これにもっと似ています。
#include <string.h>
#include <stdio.h>
int doOperation(const char* toCompare){
//do stuff in here
int compResult = strcmp(toCompare, "");
//do more stuff depending on compResult
}
int main(int argc, char* argv[]){
const char* myString = "";
doOperation(myString);
return 0;
}
doOperationの処理が正しく行われることを確認したいと思います。これは単なる例であることに注意してください。私のdoOperation関数では、の値が実際にはわかりませんtoCompare
。