fanzhihao 发表于 2016-4-25 20:06:07

大神帮小弟

#include<stdio.h>
void copy(char *from,char *to)
{
      while((*to=*from)!='\0')
      {
                to++;
                from++;
      }
      //*to='\0';      
}
int main()
{
      int flag=0;
      char a[]="i am a teacher.",b[]="you are a student.";
      printf("%s %s\n",a,b);
      copy(a,b);
      for(int i=0;b!='\0';i++)
      {
                printf("%c",b);
      }      
}
把字符数组a换到b中去,在调用函数copy(a,b)中我把最后一句去掉了,表示没有把'\0'弄到b中去,那么最后b应该是i am a teacher.nt.可是为什么我输出的仍然是i am a teacher.??不懂啊,按道理不应该啊

n0noper 发表于 2016-4-26 09:50:44

卤煮,你想过没有,当from字符串到达最后一个元素,*to = *from 这一句执行完之后to字符串的最后一个元素也是'\0',这个时候肯定截断了。

from : AAA\0
to   : BBBBB

拷贝完之后,to内存中BBB\0B   但是可惜的是,你输出的时候判断了,'\0'就不输出了。

fanzhihao 发表于 2016-4-26 18:49:52

n0noper 发表于 2016-4-26 09:50
卤煮,你想过没有,当from字符串到达最后一个元素,*to = *from 这一句执行完之后to字符串的最后一个元素也 ...

瞬间顿悟
页: [1]
查看完整版本: 大神帮小弟