本帖最后由 戴文婷 于 2014-4-18 22:37 编辑
while((*pstr=*pah)!='\0') // 是在不明白这里是要判断什么。
{
pstr++;
pah++;
}
附上个人的做法,以及注释
- #include <stdio.h>
- #include <string.h>
- int main(int argc, const char * argv[])
- {
-
- char s[]="hello";
- char *pstr=s;// 字符串中,s是字符串的首地址直接复制给指针pstr
- char ah[]="World";
- char *pah=ah;// 同上
-
- printf("执行循环之前:pstr=%s\n",pstr);
- printf("执行循环之前:pah=%s\n",pah);
-
- int i=0;
- unsigned long str_len= strlen(ah);
- printf("ah字符串的长度len=%ld\n",str_len);
- while(1)// 一直保持循环
- {
-
- pstr[i]=pah[i];// pstr储存的就是s,字符串中可以直降把pstr当s用。
- i++;
- if(i>str_len){// ,直到代表字符串数组下标i超过,字符串长度
- break;
- }
- }
- printf("执行循环之后:pstr=%s\n",pstr);
- printf("执行循环之后:pah=%s\n",pah);
-
- return 0;
- }
复制代码
啊,刚重新看了下,明白 while((*pstr=*pah)!='\0') 是什么意思了。
就像2楼这样改。因为循环到最后pstr这个指针,已经指到,s[]的\0字符了。这时打印pstr指向的字符串,输出就是没有东西了。 |