char s[100],d[100];int j=0,i=0;且s中已赋字符串,while([i]){d[j]=__;j++;i++} d[j]=0;

实现拷贝字符串。答案 s[i++]最好解释原因啊 菜鸟求教
2025-03-10 10:23:58
推荐回答(3个)
回答1:

while([i]) /*是 while(s[i ]吧?!意思是:未到字符串s末尾*/
{ d[j]=__; /*应该是:s[i],不是s[i++]。作用:对应位置字符赋值,逐个字符拷贝。*/
j++; /*指向下一个*/
i++ /*指向下一个,这里还少了;*/
}
d[j]=0; /* 0就是'\0',字符串结束标志。给字符d加上字符串结束标志。*/

可以更精练一点:
while(s[i])
{d[j++]=s[i++];}
d[j]=0;

回答2:

注:d[j]=s[i++]; 等价于d[j] = s[i];i ++ ;
所以我觉得答案应该是s[i]
否则i与j不对应(一个+2,一个+1),无法实现拷贝字符串的目的。
d[j]=0;等价于d[j]='\0';

回答3:

我觉得是因为while循环中没有i++语句,而s[i++]中的i是先用在自加,语句功能等同于d[j]=s[i]后i=i+1