请问,一个字符串str[20]假设从末尾自减i,到某处停,然后从此处strcat到另一个字符串

那么,strcat()后它还是字符串吗?
我的意思是它末尾的‘\0’还在吗?
如果我想继续自减,到下一个位置继续strcat,参数还能直接引用str[i]吗?

还在。第二个字符连接到第一个字符时,是从'\0'开始连接,连接结束时,会自动添加'\0'作为结束。

java,还是python?

在的。第二个字符连接到第一个字符时,是从'\0'开始连接,之后\0不会消失,\0只是一个结束的标志,连接结束时,会自动添加'\0'作为结束

不同的語言,實現方式不一樣。如果用C,會繁瑣點。 可以用到一些 C LIB的API輔助實現,邏輯上不複雜。如果用JAVA和PYTHON也許會更簡單。

建议楼主可以 看一下stcat()具体实现方法,一般在C/C++中,字符串的连接时自动加后缀的。

看一下stcat()具体实现方法,一般在C/C++中,字符串的连接时自动加后缀的。

首先得清楚两个概念:
1. C语言的字符串本质只是一个char数组,只有看到\0才算结束。
2.strcat函数只会改变目标的内容,而不会改变源的内容。

没看到你的代码,仅根据你的描述推测,你的str[20]应该是源字符串。那其中应该包含19个字符+\0。然后假设你有根指针ptr指向了str + 10的位置。然后当你做strcat(tag, ptr)时候,tag中会把你str中10-19 + \0复制到它的尾部。然后你的指针ptr再移动到了str + 5的位置。然后再调用strcat(tag,ptr)时候,tag会吧你str中5-19 + \0的数据复制到前面的10-19之后。在两次操作后,你的tag内容是:[tag原始内容(不包含\n)][src10-19(不包含\n)][src5-19(不包含\n)][\0]