c语言删除语句s[j++]=s[i];s[j]=✀尀0✀,我不太懂,解释一下

2026年09月19日 15:54
有5个网友回答
网友(1):

j++ 是后加加。表达式里j 不自增,出了表达式再自增1。
所以
s[j++]=s[i]; s[j]='\0';
可以按步写成 s[j]=s[i]; j=j+1; s[j]='\0'。

所谓删除,是指字符串里发生的事。 s[j]='\0' ;也就是把字符串结束符 放在 s[j] 位置,这样字符串 s 有效字符串只算到s[ j] 以前, 后面的字符不起作用了。等于删除了。 例如:
char s[12]="abcde12345"; // 原来的字符串
int j=2,i=9;
printf("%s\n",s); // 输出原来的字符串 abcde12345
s[j]=s[i]; // 把s[9] 放到 s[2] -- 字符c 变字符 5
printf("%s\n",s);
j=j+1;
s[j]='\0'; // 删除 s[j] 以后的
printf("%s\n",s);
执行上面语句,输出为:
abcde12345
ab5de12345
ab5
等于删除了 cde1234

网友(2):

这是一个追加字符的表达式  ,用来想一个字符串最后添加字符

比如 :

char s[10]="123"
int j=3
int i=0;
s[j++]=s[i];s[j]='\0'//此句运行完后s=="1231"

网友(3):

j++的运算完成是在该运算所在的小程序块完成后才发生的,也就是说,
把s[i]赋给s[j++]时,j自加的运算还没有发生,如果是++j的话,就是立刻加一,再参与之后的运算。

网友(4):

现将s[i]中的值移入s[j]中,j自加1,然后将其中的值替换为结束符,原s[j]中的值就被删除了。

网友(5):

s[j]=s[i];然后句末j++ (就是j+1的意思)
'\0' 是字符串的结束符,任何字符串之后都会自动加上'\0'