ポインターの演習として、文字列連結関数を作成しました。
void
strcat(char *s, char *t)
{
while(*s)
s++;
while(*s++ = *t++);
}
うまくいくようです:
main()
{
char *s = "Hello, ";
char *t = "world!";
strcat(s,t);
printf("%s\n", s);
return 0;
}
期待どおりに生成Hello, world!
されます。しかし、望ましくないことも起こり、文字列t
ポイントを に出力しますorld!
。strcat
変更できませんでしたt
。代わりに、文字列が移動したようです。t
strcat の後にデクリメントしてから出力すると、正しい文字列が得られます。
弦を動かしたのは何ですか?strcat
それでなければなりませんが、何が問題なのかわかりません。
それが重要な場合は、tcc バージョン 0.9.26 (x86-64 Win64) でコンパイルされています。