|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<string.h>
- int main()
- {
- char a[80],b[80];
- int i=0,j;
- gets(a);
- gets(b);
- while(a[i++]!='\0');
- i=i-1;
- for(j=0;j<5&&b[j]!='\0';j++)
- {
- a[i++]=b[j];
- }
- a[i]='\0';
- puts(a);
- return 0;
- }
复制代码
第十行i为什么自减1啊,第9行不是当i等于结束符时跳出循环,b数组第一个元素赋值给结束符的位置吗
本帖最后由 两手空空儿 于 2022-9-14 11:38 编辑
- while(a[i++]!='\0');
- i=i-1;
- 这里执行步骤应该是
- 1、读取a[i] = '\0'
- 2、i++,
- 3、判断条件不再满足,然后结束循环,
- 结束时a[i]的位置是‘\0’后面的一个字节
- 单独使用i++和使用for循环有点儿不一样,for是执行了体内代码这后i++
- for(i = 0; a[i] != '\0'; i++)
- {
- }
- 这里a[i]会停留在'\0'的位置上
- int i;
- for(i = 0; i < 5; i++){
- printf("i的值是%d\n", i);
- }
- printf("i的值是%d\n", i);
- 这里会打印 1 2 3 4 5, 而不会加到6
复制代码
|
|