siberian_wolf 发表于 2014-12-21 16:16:10

帮忙检查下错误,或者试验下为什么?

本帖最后由 siberian_wolf 于 2014-12-21 18:00 编辑

看小甲鱼老师的视频,函数最后一讲,分文件编写函数时的一个作业,我的运行结果与小甲鱼老师的不一样。但是代码基本上是一样的。自己找了好几遍没找出来,编译链接都正常。先上图
单步调试是发现是del_string()出问题了,刚开始运行i的值就是5,明明应该是0才对,赋的初值就是0,j的值是对的,就郁闷了,如下图:
搞不懂是为什么了,请大家帮忙解答!!各函数代码如下:/*main.c*/

#include<stdio.h>

void main()
{
      extern void enter_string(char str[]);
      extern void del_string(char str[], char ch);
      extern void print_string(char str[]);
   
      char ch;
      char str;
   
      enter_string(str);
      scanf("%c", &ch);
      del_string(str, ch);
      print_string(str);
}/*del.c*/

void del_string(char str[], char ch)
{
      int i, j;
      for(i=j=0; str != '\0'; i++);
      {
            if(str != ch)
            {
                  str=str;
            }
      }
      str='\0';
}
/*enter.c*/

#include<stdio.h>

void enter_string(char str)
{
      gets(str);
}
/*print.c*/

#include<stdio.h>

void print_string(char str[])
{
      printf("%s\n", str);
}





siberian_wolf 发表于 2014-12-21 18:15:16

晕,不知道是什么原因,我在另一台电脑上也是这个毛病。然后就把i的初值改为了1,结果就可以运行了。然后又把i的初值改回0,结果就一切正常了。这……………………TMD在玩我啊!!!!:huffy::huffy::huffy::huffy:

Victory_6226 发表于 2014-12-21 18:43:33

错误的原因在于del.c里面的for循环后面多了个分号
我调了老长时间才发现:cry

siberian_wolf 发表于 2014-12-21 20:25:25

Victory_6226 发表于 2014-12-21 18:43
错误的原因在于del.c里面的for循环后面多了个分号
我调了老长时间才发现

:handshake,souga,原来如此,我说呢,哎,都是粗心惹的祸,编译器没提示!:sweat::sweat:
页: [1]
查看完整版本: 帮忙检查下错误,或者试验下为什么?