| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 928 人关注过本帖
标题:将字符串转换为对应数值的问题。
只看楼主 加入收藏
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
结帖率:87.5%
收藏
已结贴  问题点数:25 回复次数:6 
将字符串转换为对应数值的问题。
#include<stdio.h>
#include<ctype.h>
void main()
{
    int atoi(char s[]);
    char a[50];
    int i;
    gets(a);
    atoi(a);
    for(i=0;a[i]!='\0';i++)   
        printf("%d",a[i]);
}
int atoi(char s[])
{
    int i,n,sign;
    for(i=0;isspace(s[i]);i++)
        ;
    sign=(s[i]=='-')? -1: 1;
    if(s[i]=='+'||s[i]=='-')
        i++;
    for(n=0;isdigit(s[i]);i++)
        n=10*n+(s[i]-'0');
    return sign*n;
}
函数atoi是C程序设计语言中的例题,为何运行结果不对!?[C程序设计语言中的3.5节(for,while 循环)可以看下。
再问下【C程序设计语言】过时了吗?
搜索更多相关主题的帖子: 字符串 return C程序设计 include 
2012-09-11 10:10
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:25 
#include<stdio.h>
#include<ctype.h>
 void main()
 {
     int atoi(char s[]);
     char a[50];
     int i;
     gets(a);
     printf("%d\n", atoi(a));
     for(i=0; a[i] != '\0'; i++)   
        printf("%c",a[i]);
     putchar('\n');
 }
 int atoi(char s[])
 {
     int i,n,sign;
     for(i=0; isspace(s[i]); i++)
         ;
     sign=(s[i] == '-')? -1: 1;
     if(s[i]=='+' || s[i]=='-')
         i++;
     for(n=0; isdigit(s[i]); i++)
         n = 10*n + (s[i]-'0');

     return sign*n;
 }

[ 本帖最后由 遗矢的老人 于 2012-9-12 00:49 编辑 ]
2012-09-12 00:46
遗矢的老人
Rank: 9Rank: 9Rank: 9
来 自:成都
等 级:蜘蛛侠
威 望:7
帖 子:325
专家分:1131
注 册:2012-7-20
收藏
得分:0 
你自己根本就没打印出来而已,其实也不用那么复杂啦,atoi()函数就是做这个事的
2012-09-12 00:52
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:0 
atoi()本身没有错呀!

做自己喜欢的事!
2012-09-12 11:23
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:0 
只是用来学编程语言,没有什么过时不过时的,学的是编程思想和技巧,转换到其它语言也很方便的。
很奇怪,以前大学里都学pascal语言,最近这些年,不知怎么就转成了C语言。
纯粹从学语言的教学角度来说,pascal语言是不错的选择。
现在都变成了C语言,真不知道是为了什么?它跟C++都不是一回事!
有感而发,多说了几句!

做自己喜欢的事!
2012-09-12 11:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 5楼 netlin
潮流呗

授人以渔,不授人以鱼。
2012-09-12 16:04
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
程序代码:
int atoi(char* str)
{
  if(!str)
  return 0;

  int ret=0;
  int flag=1;

  while(*str==' ')++str;
  
  if('-'==*str)
  flag=-1,++str;
  else if('+'==*str)
  ++str;

  while((*str>='0')&&(*str<='9'))
  {
      ret=ret*10+(*str-'0');
      ++str;
  }
  
  return ret*flag;
}

char* itoa(int n,char *str,int radix)
{
    static char X[16]={'0','1',
                       '2','3',
                       '4','5',
                       '6','7',
                       '8','9',
                       'A','B',
                       'C','D',
                       'E','F'
                      };
    if(!str)
    return NULL;

    int i=0;
    while(1)
    {
      if(radix==16)
      str[i]=X[n%radix];
      else
      str[i]=n%radix+'0';

      if((n/=radix)==0)
      break;
      ++i;
    }
    for(int j=0;j<(i+1)/2;++j)
    {
        char c=str[j];
        str[j]=str[i-j];
        str[i-j]=c;
    }
    return str;
}

想象力征服世界
2012-09-12 19:28
快速回复:将字符串转换为对应数值的问题。
数据加载中...
 
   



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

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