| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1615 人关注过本帖
标题:请各位高手帮忙,FOR循环只循环了一次
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那我教你:你既然已经发现了循环只执行了一次,那么问题就肯定在这个循环的终止条件上,在循环前面用printf()打印一下相关的数据,看到底是怎么回事,如果问题不在循环前面,就在循环里面,把printf()改到循环体里第一行。追踪到数据的变化细节,自然摸清程序执行的逻辑,这样才能解决问题,所有高手都是这样做,不要让人家做了告诉你结果你再去感激人家,那样是学不到东西的。

懂得用printf()检查数据,是调试的第一步,也是最基本的手法,在没有强大调试器的场合,都是用这手,不靠工具,用脑。

授人以渔,不授人以鱼。
2013-07-24 10:40
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
收藏
得分:0 
if(!strcmp(stu[i].name,"null"))
        {
            n=i;
            break;
        }
上面这段是比较非空么?有问题。
2013-07-24 10:49
icanfeelyou
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-7-23
收藏
得分:0 
回复 11楼 TonyDeng
谢谢,大哥,你能留个QQ吗,我想向你学习,我不是遇到问题就随便问人的,我也想了两天多实在想不出来,我想向你学习程序调试的方法,我们老师根本没有教过我们,三章的课程,他一节课,45分钟就将讲完了,我们这是公共课,有200多人,听课的只有10左右,估计他也没兴趣了
2013-07-24 11:03
icanfeelyou
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-7-23
收藏
得分:0 
回复 12楼 hczsea
应该没问题吧,就是stu[i].name的值与null进行比较
2013-07-24 11:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你照我上面说的做了,一步一步查,自然会明白的。

授人以渔,不授人以鱼。
2013-07-24 11:17
icanfeelyou
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-7-23
收藏
得分:0 
回复 15楼 TonyDeng
还是不懂啊,只知道,第二次循环就直接跳过gets函数,
2013-07-24 11:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你这个程序设计的本来就不好,getchar()、gets()、scanf()全都来了,这样输入数据不好的。通常是输入缓冲区有残留数据造成问题。

跳过gets(),加下面描红的一行,看看跳过时name是什么。
        gets(stu[i].name);
        printf("%s\n", stu[i].name);
        if(!strcmp(stu[i].name,"null"))
        {
            n=i;
            break;
        }

授人以渔,不授人以鱼。
2013-07-24 11:37
icanfeelyou
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-7-23
收藏
得分:0 
回复 16楼 icanfeelyou
第一次,输出了我所输入的名字,但是第二次就什么也没输出了
2013-07-24 11:43
icanfeelyou
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2013-7-23
收藏
得分:0 
回复 17楼 TonyDeng
你看看吧
2013-07-24 11:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
第二次没输出,在后面的if()体内printf("hello\n")看看是不是进入了。

授人以渔,不授人以鱼。
2013-07-24 12:17
快速回复:请各位高手帮忙,FOR循环只循环了一次
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.091072 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved