字符数组复制后 怎么什么都不输出唉...

drizztguai 2008-01-28 10:41:19

#include <stdio.h>
// 复制i am a boy 到 b[20]中
void main ()
{
char *a="i am a boy";
char b[20];
int i;
for (i=0;*(a+i)!='/0';i++)
//for (i=0;*(a+i)=='/0';i++) ..靠,应该为假才跳出。错了。
*(b+i)=*(a+i);
// 错 了! 因为a的 \0 时候跳出了! 所以没复制, 导致可怜的b没结尾。。。e了一下出错了。

//这时候就要用到循环时候常考的东西了。。。 i++ 后价值已经变了。
*(b+i)='\0';
printf ("%s",b);

}


好奇怪唉~ 我感觉都对. 可是什么都不输出,win xp 还出错-_-;
...全文
133 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cceczjxy 2008-01-29
  • 打赏
  • 举报
回复
for (i=0;*(a+i)!='/0';i++)

一个也没有复制就跳出来了
'/0'->'\0'
chenzhp 2008-01-29
  • 打赏
  • 举报
回复
for (i=0;*(a+i)!='\0';i++)
应该改为:'\0'
HelloDan 2008-01-29
  • 打赏
  • 举报
回复

#include <stdio.h>

int main ()
{
char *a="i am a boy";
char b[20]; int i;
for (i=0;*(a+i)!='\0';i++) /*看清楚这里改了什么*/
*(b+i)=*(a+i);

*(b+i)='\0';
printf ("%s",b);

return 0;
}
wuyu637 2008-01-28
  • 打赏
  • 举报
回复
#include <stdio.h>
// 复制i am a boy 到 b[20]中
void main ()
{
char *a="i am a boy";
char b[20];
int i;
for (i=0;*(a+i)!='/0';i++) ///for (i=0;*(a+i)!='\0';i++)
//for (i=0;*(a+i)=='/0';i++) ..靠,应该为假才跳出。错了。
*(b+i)=*(a+i);
// 错 了! 因为a的 \0 时候跳出了! 所以没复制, 导致可怜的b没结尾。。。e了一下出错了。

//这时候就要用到循环时候常考的东西了。。。 i++ 后价值已经变了。
*(b+i)='\0';
printf ("%s",b);

}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧