| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 437 人关注过本帖
标题:输出问题
只看楼主 加入收藏
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
输出问题
程序代码:
#include<iostream>
using namespace std;
int legth(char *str);
int main()
{
   char s;
   char *p;
   cin>>s;
   p=&s;
   cout<<legth(p);
return 0;
}
int legth(char *str)
{
  int i=0;
  while(*str++!=NULL)
   i++;
  return i;
} 
为什么无论输入多少个字母都输出7呢,而且为什么char s能接受多个字符而不报错呢.
搜索更多相关主题的帖子: 输出 
2010-04-14 22:04
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
你用字符来接收一个字符串当然会出错了。改成这样就可以了。把s定义成一个较长的字符数组就可以了。
代码如下:

#include<iostream>
using namespace std;

int legth(char *str);

int main()
{
   char s[100];
   char *p;
   cin>>s;
   p=s;
   cout<<legth(p)<<endl;
return 0;
}

int legth(char *str)
{
  int i=0;
  while(*str++!=NULL)
        i++;
  return i;
}

南国利剑
2010-04-14 22:23
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
注意在输入的时候不要用空格和回车键分割单词。否则,接受到的就是空格和回车之前的字符串,后面的都没有正常接收。

南国利剑
2010-04-14 22:25
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
收藏
得分:0 
不会出错啊,一直输出7,我打一个字母也输出7.
2010-04-14 22:31
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:10 
其实楼主这题是偶然中的必然原因如下:
程序进入main时会保存进入时的ESP值,这个值一般是0X0012FFC0第一个变量的ESP值等于(ESP-4) 而指针是从第内存指向高内存的所以就产生了上述的问题
假设输入5 :那么变量一内存中的值等于35 CC CC CC C0 FF 12 00(红色为第一个变量的值,蓝色为程序进入main 时的ESP值,内存中是反写的)
当p=&s;时p指向第一个变量,而while(*str++!=NULL)为假时str==NULL,好那我们数一数好了35 CC CC CC C0 FF 12 00
                                                                                  1 2   3  4  5  6  7   明白了不

2010-04-15 11:47
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 4楼 flyingzc
你用我的代码试后也是一直输出7吗?
我在我的环境中试过了啊,能够正常输出。
如果是那样的话,可能是你的环境有问题吧。
你再试试。

南国利剑
2010-04-15 16:08
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 5楼 yyblackyy
你说的我不是很理解?
能不能说的清楚些。
像你这么说是不是出现这种情况是正常的了。
那岂不是乱套了。
或者干脆解释一下,怎么避免这种情况发生。
谢谢!!!!

南国利剑
2010-04-15 16:12
flyingzc
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2010-4-1
收藏
得分:0 
回复 4楼 flyingzc
请问esp是什么啊
2010-04-15 17:22
快速回复:输出问题
数据加载中...
 
   



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

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