精华内容
下载资源
问答
  • C语言字符串转换整数C语言字符串转换整数完整源码 C语言字符串转换整数完整源码 #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /** * the ...

    C语言字符串转换为整数

    C语言字符串转换为整数完整源码

    #include <assert.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    /**
     * the function take a string and return an integer
     * \param[out] str pointer to a char address
     */
    int c_atoi(const char *str)
    {
        int i;
        int sign;
        long value;
        long prev;
    
        i = 0;
        sign = 1;
        value = 0;
    
        /* skipping the spaces */
        while (((str[i] <= 13 && str[i] >= 9) || str[i] == 32) && str[i] != '\0')
            i++;
    
        /* store the sign if it is negative sign */
        if (str[i] == '-')
            sign = -1;
        else if (str[i] == '+')
            sign = 1;
    
        /* converting char by char to a numeric value */
        while (str[i] >= 48 && str[i] <= 57 && str[i] != '\0')
        {
            prev = value;
            value = value * 10 + sign * (str[i] - '0');
    
            /* managing the overflow */
            if (sign == 1 && prev > value)
                return (-1);
            else if (sign == -1 && prev < value)
                return (0);
            i++;
        }
        return (value);
    }
    
    /**
     * test the function implementation
     */
    void test_c_atoi()
    {
        printf("<<<< TEST FUNCTION >>>>\n");
        assert(c_atoi("123") == atoi("123"));
        assert(c_atoi("-123") == atoi("-123"));
        assert(c_atoi("") == atoi(""));
        assert(c_atoi("-h23") == atoi("-h23"));
        assert(c_atoi("         23") == atoi("         23"));
        assert(c_atoi("999999999") == atoi("999999999"));
        printf("<<<< TEST DONE >>>>\n");
    }
    
    /**
     * the main function take one argument of type char*
     * example : ./program 123
     */
    int main(int argc, char **argv)
    {
        test_c_atoi();
    
        if (argc == 2)
        {
            printf("Your number + 5 is %d\n", c_atoi(argv[1]) + 5);
            return (0);
        }
        printf("wrong number of parmeters\n");
        return (1);
    }
    
    
    展开全文
  • 这个字符串参数必须包含一个或多个数字,函数应该把这些数字字符转换整数并返回这个整数,如果字符串参数包含了任何非数字字符,函数就返回零。 请不必担心算数溢出。 提示:这个技巧很简单,你每发现一个数字,...

    为下面这个函数原型编写函数定义:

    int ascii_to_integer(char *string);

    这个字符串参数必须包含一个或多个数字,函数应该把这些数字字符转换为整数并返回这个整数,如果字符串参数包含了任何非数字字符,函数就返回零。

    请不必担心算数溢出。

    提示:这个技巧很简单,你每发现一个数字,把当前值乘以10,并把这个值和新数字所代表的值相加。

     

    这个算法要求即是将比如 “899”转换为899返回。

    设数据为x = 0,发现第一个数字8,则x += 8 ,x为8;

    发现第二个数字9,则x = x*10 + 9 = 89;

    发现第三个数字9,则x = x*10+9 = 899;

    
    int ascii_to_integer(char *string) {
        int x = 0;
        if (!string) {
            return 0;
        }
        printf("string: %s\n",string);
        char ch;
        while(ch = *string++) {
            printf("ch = %c,(ascii: %d)\n", ch, ch);
            if (ch >='0' && ch <= '9') {
                ch -= '0';
                x = (x * 10 + ch);
                printf("x = %d\n", x);
            } else {
                return 0;
            }
        }
        return x;
    }
    
    int main () {
        printf("rs : %d\n", ascii_to_integer("25698"));
        return 0;
    }

     

    
     
    展开全文
  • c语言中,我们经常面临需要将字符串转换为整型,以及将整型转化为字符串的问题。 将字符串转换整数的函数在stdlib.h中定义: int atoi(const char *str); atoi函数会跳过str中前面出现的空格,从第一个...
    在c语言中,我们经常面临需要将字符串转换为整型,以及将整型转化为字符串的问题。

    将字符串转换为整数的函数在stdlib.h中定义:

    int atoi(const char *str);

    atoi函数会跳过str中前面出现的空格,从第一个数字开始转换。下面是我的实现:

    <span style="font-size:18px;">int my_atoi(const char *str){
    	//argument check first!
    	assert(NULL != str);
    	int ret=0,sign=1;
    	//skip tab and space
    	for(; *str==' '||*str=='\t'; str++);
    	if(*str == '-')sign = -1;
    	if(*str == '-' || *str == '+')str++;
    	while(isdigit(*str)){
    		ret = ret*10 + *str - '0';
    		str++;
    		}
    	return sign*ret;
    }</span>
    要注意的几点: 

    1.参数检验。始终要放在最开始,在输入是指针的情况下,永远不要忘记首先检验是否是NULL指针;

    2.字符串开始处的空格(我还加入了制表符)要注意跳过;

    3.符号,不要忘了数字字符串第一个字符可能出现加号和减号!

    对于将数字转换为字符串,c标准中并没有定义(itoa只是在一些编译器中自己定义)。c标准中没有定义的原因我觉得是数字转成字符串可以使用sprintf格式化输出函数来完成。当然我们可以自己编写一个itoa函数。这里的参数原型参照的是vc中定义的itoa:

    <span style="font-size:18px;">#define ABS(cond) (cond>0?cond:-cond)
    char   *my_itoa(int   value,   char   *string,   int   radix)
    {
        assert(string!=NULL);
        char tmp[32]={'\0'};
        int tmpval=ABS(value);
        int i,j;
        for(i=0;i<32;i++)
        {				 
    	 tmp[i]=(tmpval%radix)+'0';
    	 tmpval=tmpval/radix;
    	 if(tmpval==0)
    	<span style="white-space:pre">	</span>break;
    	 }
         if(value<0)tmp[++i]='-';
         for(j=0;i>=0;i--)
    		  string[j++]=tmp[i];
         string[j]='\0';
         return string;
    }</span>
    当然,一般情况下我们使用sprintf就可以完成任务啦: 

    char num[32];

    sprintf(num,"%d",12345);




    展开全文
  • 转自:http://blog.csdn.net/jiede1/article/details/708093521、C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字。需要注意的是,这个几个函数是C语言提供的扩展功能...


    1、C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字。需要注意的是,这个几个函数是C语言提供的扩展功能,并不是标准的函数,必须引入头文件# include <stdlib. h>;若需要移植性,请用sscanf函数。头文件:#include <stdlib.h>

    atoi():int atoi(const char *str );

    功能:把字符串转换成整型数。

    str:要进行转换的字符串

    返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 0。

    说明:当第一个字符不能识别为数字时,函数将停止读入输入字符串。

    例如:int num=atoi(“12345”);//字符串”12345”转换为数字12345,并存入num变量中

    2、sscanf函数。
    sscanf函数是C语言中从一个字符串中读进与指定格式相符的数据的函数。sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。使用sscanf函数可以实现字符串到任意数据类型的转换。
    头文件:#include<stdio.h>

    例如:char s[]=”12345”;
    int n;
    sscanf(s,”%d”,&n);//把字符串s转换为整形数据并存入变量n中

    3、字符串数字之间的转换

    (1)string --> char *
       string str("OK");
       char * p = str.c_str();

    (2)char * -->string
       char *p = "OK";
       string str(p);
    
    (3)char * -->CString 
       char *p ="OK";
       CString m_Str(p);
       //或者
       CString m_Str;
       m_Str.Format("%s",p);
    
    (4)CString --> char *
       CString str("OK");
       char * p = str.GetBuffer(0);
       ...
       str.ReleaseBuffer();
    (5)string --> CString  
       CString.Format("%s", string.c_str());  
    
    (6)CString --> string
       string s(CString.GetBuffer(0));  
       GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间,CString对象不能动态增长了。
    (7)double/float->CString
       double data;
       CString.Format("%.2f",data); //保留2位小数
    
    (8)CString->double
       CString s="123.12";
       double   d=atof(s);   
    
    (9)string->double
    //c_str函数的返回值是const char*的,atof不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程
      double d=atof(s.c_str());  
    • 1

    4、数字转字符串:使用sprintf()函数

    char str[10];
    int a=1234321;
    sprintf(str,"%d",a);

    char str[10];
    double a=123.321;
    sprintf(str,"%.3lf",a);

    char str[10];
    int a=175;
    sprintf(str,"%x",a);//10进制转换成16进制

    char itoa(int value, char string, int radix);

    同样也可以将数字转字符串,不过itoa()这个函数是平台相关的(不是标准里的),故在这里不推荐使用这个函数。

    4、使用stringstream类,必须使用#include<sstream>

    用ostringstream对象写一个字符串,类似于sprintf()

    ostringstream s1;
      int i = 22;
      s1 << "Hello " << i << endl;
      string s2 = s1.str();
      cout << s2;

    用istringstream对象读一个字符串,类似于sscanf()

    istringstream stream1; string string1 = "25"; stream1.str(string1); int i; stream1 >> i; cout << i << endl; // displays 25
    展开全文
  • C语言:把数字字符串转换成整型数字不懂时,别乱说;懂得时,别多说;心乱时,慢慢说;没话时,就别说。运行环境:TC2. 把数字字符串转换成整型数字。比如说小编输入一个数字字符当你年轻时,你以为什么都有答案,...
  • C语言 字符数组转换整数 stringToInt

    千次阅读 2016-08-08 16:35:09
    字符串转化整数
  • 1.字符串转换整数  atoi()函数,原型int atoi(const char *nptr),包含在头文件stdlib.h中,用法如:char *a="123";int n=atoi(a);printf("%d",n); 2.整数转换为字符串  Linux中没有itoa()可用,但是用...
  • 字符串转化为整数 1.atoi函数与atol函数 atol函数是将字符串转化为整形,atol函数是将字符串转化为长整型 注意:其实他们没什么区别。 int main() { printf("sizeof(int)=%d", sizeof(int)); printf("sizeof(long)...
  • 字符整数(包括负数) */ #include int atoi(char *string) { int value=0,flag=0; while((*string)!='\0') { if(*string=='-') //如果首位是'-'号 flag标志位值1  { flag=1; string++; } if(*...
  • c语言字符串类型转换

    2021-01-10 21:40:50
    目录c语言字符串类型转换atoi() -- 字符串转整数atol() -- 字符串转长整数atof() -- 字符串转浮点数strol() -- 字符串转长整数stroul() -- 字符串转无符号长整数strod() -- 字符串转浮点数拓展函数(非标准库函数) ...
  • c语言字符串转换整数

    千次阅读 2016-07-08 21:26:15
    c语言的数字字符串转换整数,1.可接受“123 2123”处理为1232123;2.空指针、正负号、非纯数字字符串、数据越界溢出的错误处理。   #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #...
  • LeetCode字符串转换整数 (atoi)(C语言)

    万次阅读 2019-03-14 23:28:04
    请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
  • c语言 字符串转换为int或float

    万次阅读 2015-01-19 17:08:11
    c语言编程中,经常会遇到将字符串或者字符数组内的数据转换为int型数据或者float型数据,网上找了好多方法,结果都不可行...是把字符串转换成int型的一个c语言函数,很方便的进行使用。  其函数参数是一个字符串
  • 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正...
  • c语言中将整数转换字符串Conversion from integer to string and from string to integer are common operations in most applications such as C++. ...
  • 题目:字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正...
  • C语言中将字符串转换整数

    千次阅读 2015-07-13 15:30:40
    在编程中,经常需要用到整数和字符串的相互转换,将字符串转换整数的常用库函数为atoi()函数,将整数转换为字符串可以用sprintf()函数。这里要提到的是将字符串转换整数的另一个函数:sscanf()函数。#include &...
  • C语言中,我们经常面临需要将字符串转换为整型,以及将整型转化为字符串的问题。 将字符串转换整数的函数在stdlib.h中定义: int atoi(const char *str); atoi函数会跳过str中前面出现的空格,从第一个数字...
  • c语言字符串转换:大小写互换

    万次阅读 2018-05-17 18:54:23
    描述 现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。输入第一行只有一个整数m(m&lt;=10),表示测试数据组数。接下来的m行,每行...
  • C语言练习题】字符串转换整数

    千次阅读 2018-12-29 10:08:58
    /*把一个数字字符串转换成一个整数 *输入:字符串首地址 *输出:转换后的整数 */ int ascii_to_integer( char *string ) { int value = 0; while( *string >= '0' && *string ) { value *= 10; //相当于十...
  • 字符串转换整数及整数转换字符串

    千次阅读 2014-12-24 20:33:51
    字符串转换整数及整数转换字符串 1、字符串转换成整型数 C语言库函数:atoi 实现了此功能。 int atoi(const char *nptr); 函数说明: 参数nptr字符串,如果第一个非空格字符存在或者不是数字也不是正负号则返回...
  • C语言 整数字符串转换成int整数

    千次阅读 2017-10-12 16:20:39
    整数字符串变数字 */ #include #include #include int strToNumber(); int powTen(int n);//返回10的n次方 void main() { printf("你输入的整数位%d\n",strToNumber());//读入整数字符串,返回int整数 } int powTen...
  • atoi() 函数用来将字符串转换整数(int),其原型为: int atoi (const char * str); 【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测)...
  • 请编写函数function,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换整数的函数)。 2 、温馨提示 C试题汇总里可用于计算机二级C语言笔试、机试、...
  • 请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
  • c语言中的转换字符串整数的函数

    千次阅读 2018-03-25 16:42:25
    1、atoi函数把字符串转换成整型数。其含义是ASCII to integer 的缩写。 2、函数说明 1)简介编辑C语言库函数名 atoi 原型: int atoi(const char *nptr); UNICODE _wtoi() 2)函数说明编辑参数nptr字符串,...
  • 第一个函数:把一个字符串转换为16进制整数,源代码如下 #include /* c标准库 */ #include /* c标准库 */ int ascii_atox(const char *s) { char xdigs[] = "0123456789ABCDEF"; long sum; /* 跳过空格 */ while...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,406
精华内容 27,362
关键字:

c语言字符串转换整数

c语言 订阅