これは、文字列の長さを見つけるサンプルプログラムです。ビッグ/リトルエンディアンでのポインタの減算
{
char *ptr="Autobiography Of Yogi";
char *a = ptr , *b = &ptr[20];
printf(" length is %d ", (b-a)+1); // subtracting pointers to find string length
}
私の質問は、リトルエンディアンマシンとビッグエンディアンマシンの両方でこのプログラムは問題ないのですか?
エンディアンはコードに影響しません。しかし、ハードコーディングされた '20'のため、あなたのコードは貧弱です。 –
注:ポインタ減算の結果、 'int 'と異なるかもしれない' ptrdiff_t'型が生成されます。移植性のあるC99コードでは、 'printf("%td \ n "、(ba)+1);' – chux
を使用します。あなたのアプローチの主な問題は、それを使用するには文字列の長さを知っていなければなりません。 – Lundin