| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1108 人关注过本帖
标题:为什么总是245,好郁闷。。。
只看楼主 加入收藏
吴军旗
Rank: 5Rank: 5
等 级:职业侠客
帖 子:286
专家分:308
注 册:2011-9-14
结帖率:100%
收藏
 问题点数:0 回复次数:15 
为什么总是245,好郁闷。。。
程序代码:
#include < stdio.h >
#include < stdlib.h >
void main ( )
{
    char string [81];
    int i, sum = 0;
    char c;
    gets ( string );
    for ( i = 0; ( c = string[i]) != '\n'; i++ )
        sum = sum  +1;
    printf ( "%d", sum );
    system ( "pause" );
}

搜索更多相关主题的帖子: color 
2011-10-21 00:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
别说我总不答你问题。你要学会自己调试程序。现在你设计的代码,希望检测到字符串string中出现'\n'时结束循环,那么你要想到,通过gets()函数接收到的string,真会有这个字符存在吗?如果它不存在,你怎么办?如何才能知道是否存在?

写每一行代码,都要想清楚一切的可能,不是乱写一气的。你这样学写程序,包保碰得你头破血流,死不改悔就不听吧。

又比如,你在for循环中写个(c = string[i]) != '\n',是什么用意?有必要把string[i]赋给c再判断是否等于'\n'吗?这些问题,你问过自己没有?自己答得清楚没有?
收到的鲜花
  • smallmoon5212011-10-21 12:50 送鲜花  5朵   附言:说的很好,这些其实都不难,希望大家学习C时 ...

授人以渔,不授人以鱼。
2011-10-21 00:44
一品谋士
Rank: 2
等 级:论坛游民
帖 子:26
专家分:36
注 册:2011-10-16
收藏
得分:0 
学习是一种态度。。。。。。。并不意味着问的越多越好
2011-10-21 01:01
回忆、想忘
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2010-12-24
收藏
得分:0 
gets读一行输入的时候,并没有在缓冲区中存储结尾的换行符
2011-10-21 01:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
写程序就如写文章,下笔三思。如果你不了解一个名词术语、成语典故到底是什么意思,就不要贸贸然使用。同理,如果你不熟悉gets()函数的行为,但又想用,那么首先要做的事情是摸清它的底细——需要什么头文件、用什么参数、返回什么、行为规律等等,都必须要弄清楚,才好决定是否使用,判断依据是确实能很好地贯彻自己的意图。

程序员思维是否严谨,就看你能质疑程序到什么程度。你定义string[81],但又用gets(),那么,如果用户输入字符到100char仍不敲回车时,你知道gets()得到的string有没有'\0'?这种可能性,你研究过吗?

授人以渔,不授人以鱼。
2011-10-21 01:15
tangconghui
Rank: 1
等 级:新手上路
帖 子:10
专家分:6
注 册:2011-10-17
收藏
得分:0 
路过……学习了……
2011-10-21 09:20
guang0725
Rank: 2
等 级:禁止访问
帖 子:70
专家分:70
注 册:2011-9-5
收藏
得分:0 
gets存储的是不是\0啊,求回答
2011-10-21 11:43
guang0725
Rank: 2
等 级:禁止访问
帖 子:70
专家分:70
注 册:2011-9-5
收藏
得分:0 
#include"stdio.h"
#include"conio.h"
#include"string.h"
main()
{  
   int i,num=0;
   char c,string[81];
   printf("输入一串字符:");
   gets(string);
   for(i=0;;i++)
   {
     num++;
     c=string[i];
     if(c=='\0')break;
      
   }

   printf("%d\n",num);
   getch();
}
2011-10-21 11:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
当你定义char string[81]的时候,如果输入字符串的字符数超过80,程序就会崩溃,不信你试试!

授人以渔,不授人以鱼。
2011-10-21 15:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
输入数据的时候最好以文件结束标志(EOF)结束

                                         
===========深入<----------------->浅出============
2011-10-21 16:34
快速回复:为什么总是245,好郁闷。。。
数据加载中...
 
   



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

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