免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1262 | 回复: 4
打印 上一主题 下一主题

这个程序的错误 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-11 18:40 |只看该作者 |倒序浏览
请教下大家下面的这个程序的错误:

void cy (char *to,  char *from)
{
      for ( ; *from != '\0'; ++from, ++to )
               *to = *from;

           *to != '\0';
}

int main(void)
{
     void cy( char *to, char *from);
      char str1[] = "how are you";
      char str2[50];

      cy ( str2, str1);
      printf ("%s\n", str2);

      cy ( str2, "what are you doing");
       printf ("%s\n" str2);

      return 0;
}
里面在两个错误,有一个是错误是 “*to != '\0'”错误原因是 “statement with no effect”(这是编译器下的错误警告)。     第二个错误是
“  cy ( str2, "what are you doing");
       printf ("%s\n" str2);”这里,可以编译成功,但显示的竟是段错误。
这两个错误要请教你们了,为什么会出现这种情况?
(我是在虚拟机下的LINUX写的,在WINDOW下解释得不是很清楚请不要介意)

论坛徽章:
0
2 [报告]
发表于 2006-12-11 18:50 |只看该作者
void cy (char *to,  char *from)
{
      for ( ; *from != '\0'; ++from, ++to )
               *to = *from;

           *to != '\0';
}
=========================>
void cy (char *to,  char *from)
{
      for ( ; *to = *from; ++from, ++to )
              ;
}

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
3 [报告]
发表于 2006-12-11 19:06 |只看该作者
原帖由 lj_860603 于 2006-12-11 18:50 发表
void cy (char *to,  char *from)
{
      for ( ; *from != '\0'; ++from, ++to )
               *to = *from;

           *to != '\0';
}
=========================>
void cy (char *to,  char * ...

不过我去掉了*to != '\0'改为to = '\0'就正确了,这是为什么的?

论坛徽章:
0
4 [报告]
发表于 2006-12-11 22:24 |只看该作者
基本功吧?
奇怪的是,你是为了做测试?
void cy (char *to,  char *from)
{
      for ( ; *from != '\0'; ++from, ++to )
               *to = *from;

           *to != '\0';       ----这边是比较运算,没有什么意义吧?,感觉你的目的是为了在字符串末尾加上'\0'作为数组结束符
                       修改为*to='\0'吧。
}

int main(void)
{
     void cy( char *to, char *from);     ---函数声明干吗放在main函数里面?放在main函数体外比较好。
      char str1[] = "how are you";
      char str2[50];

      cy ( str2, str1);                           ---这边不报错,是因为str1是一个地址值,是一个变量,调用不会出错。
      printf ("%s\n", str2);

      cy ( str2, "what are you doing"); ---这边报错是因为你传到cy里面后,from是一个地址值,是一个数字常量,你++,当然错。
       printf ("%s\n" str2);

      return 0;
}

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-05-23 14:31:12
5 [报告]
发表于 2006-12-11 22:49 |只看该作者

回复 4楼 hebioldman 的帖子

非常你这么详细告诉我,我终于明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP