作为初学者,有一个小问题想问问各位大牛...
for(i=0;i<40;i+=k)
for(j=0;j<k;j++)
{
if(s[i+j]!='\0')
s[i+j]=s[i+j]^m[j];
}
情况是这样子的..如果*s="turbo c",装在M[40]里面,有7个字符,现在为它加密,密码*S="abc",有3个字符.也就是上面的k=3......
对变量i来说,当i=6时
for(j=0;j<3;j++)
s[6]='c'!='\0',,,,执行s[6]=s[6]^m[0].....
然后,j++后,就成s[7]='\0'了,自然不执行了,j++后,s[8]=什么哟?
然后再次回到外循环.i=9....如此下去吗?但这时的s[i+j]=?
作为初学者,也许不该有此过多纠缠,但我想不通啊...
经过我努力,查得,如果是int a[]类型的.初值个数如果填不完的话,好像后面的自动充为0.
如果是char a[],类,填不满时好像是以空格自动填写的..
显然空格!='\0'啊,是不是要执行s[i+j]=s[i+j]^m[j]?
不要叫我去实验,已纪矣,运行正常,只是想不明其中过程,,,,
大鸟支持。。。
[此贴子已经被作者于2007-9-19 23:10:58编辑过]