| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:atoi问题
只看楼主 加入收藏
hlershi
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2009-8-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
atoi问题
#include<iostream>
#include<cstdlib>
#include<cctype>
void read_and_clean(int& n);
void new_line();
int main()
{
  using namespace std;
  int n;
  char ans;
  do
    {
     cout<<"enter the number:\n";
     read_and_clean(n);
     cout<<"the cleam number is:"<<n<<endl;
     cout<<"Angin?(yea/no)";
     cin>>ans;
     new_line();
    }while((ans!='n')&&(ans!='N'));
    return 0;
}
   void read_and_clean(int& n)

   {
     using namespace std;
     const int ARRAP_SIZE=6;
     char digit_string[ARRAP_SIZE];
     char next;
     cin.get(next);
     int index=0;
     while (next!='\n')
    {
    if((isdigit(next))&&(index<ARRAP_SIZE-1))//在这里isdigit的作用是什么,什么去掉之后输入$100后就返回0而不是100了
      {
       digit_string[index]=next;
       index++;
       }
      cin.get(next);
    }
digit_string[index]='\0';
n=atoi(digit_string);//书上说:如果参数不与一个int值对应 atoi就返回0为什么输入$100时这里反回100而不是0


   }
   void new_line()
   {
    using namespace std;

     char symbol;
     do
     {
     cin.get(symbol);
      }while(symbol!='\n');
   }
我是新手希望大虾们能说清楚一点谢谢!
搜索更多相关主题的帖子: 一个程序问题 
2009-08-11 21:55
hlershi
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2009-8-11
收藏
得分:0 
还有,为什么去掉n=atoi(digit_string);返回的是一个垃圾值?
2009-08-11 22:00
taozztzz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:180
注 册:2008-12-21
收藏
得分:20 
如果参数的字符是一个数字,即'0'~'9',isdigit()返回true,否则返回false.
atoi函数的意思你是不是理解错了,它的作用是将一个字符串转换成一个数字,如:
    const char buf[256]="1506";
    int n=atoi(buf); //n=1506
atoi(const char *)从字符串中的第一个不为0的数字字符开始转换,直到遇到非数字字符或'\0'。
书上说:如果参数不与一个int值对应 atoi就返回0为什么输入$100时这里反回100而不是0 ?
是指如果 参数中的字符串 不包含可转换为int的内容(如:"ok&&s")!

胜利是唯一的信仰!
2009-08-15 18:21
快速回复:atoi问题
数据加载中...
 
   



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

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