一.将字符串转化为对应的数值

/*=============================================================================
#
#     FileName:   stringToNo.c
#     Algorithm:  将字符串转化为对应的整型数值
#     Author:     Knife
#     Created:    2014-06-22 20:37:36
#
=============================================================================*/
#include<stdio.h>
#include<string.h>
int atoi(char* s){int i, n;n = 0;for(i = 0; s[i] >= '0' && s[i] <='9'; ++i){n = 10 * n + (s[i] - '0');}return n;
}void main(){char charArr[] = "4562";int number = atoi(charArr);    printf("%d\n",number);
}

二.将数值转化成字符串

/*=============================================================================
#
#     FileName:   noToString.c
#     Algorithm:  将整型数值转化成字符串
#     Author:     Knife
#     Created:    2014-06-22 20:37:36
#
=============================================================================*/
#include<stdio.h>
#include<string.h>
#define MAX 100//字符串逆转
void reverse(char* charArr){int j, k, tmp;j = 0;k = strlen(charArr)-1;for(; j < k; j++, k--){tmp = charArr[j];charArr[j] = charArr[k];charArr[k] = tmp;}
}void itoa(int n, char* charArr){int tmpN, i, sign;i = 0;//判断是否为负数if((sign = n) < 0){n = - n;}//循环while(n > 0){tmpN = n % 10;n = n / 10;charArr[i++] = tmpN + '0';}if(sign < 0){charArr[i++] = '-';}charArr[i] = '\0';reverse(charArr);
}void main(){int n = -456;char charArr[MAX];itoa(n, charArr);printf("%s\n", charArr);
}

三.问题扩展

  在数的对二的补码表示中,我们编写的itoa函数不能处理最大的负数,即n等于-2^(字长-1)的情况,因为我们在(二)中的代码中判断如果n为负数,令n=-n,所以导致了溢出。修改该函数,使它在任何机器上运行时都能打印出正确的值。修改后的代码如下:

/*=============================================================================
#
#     FileName:   noToString2.c
#     Algorithm:  将整型数值转化成字符串(扩展版)
#     Author:     Knife
#     Created:    2014-06-22 20:48:36
#
=============================================================================*/
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX 100//字符串逆转
void reverse(char* charArr){int j,k,tmp;j = 0;k = strlen(charArr)-1;for(; j < k; j++, k--){tmp = charArr[j];charArr[j] = charArr[k];charArr[k] = tmp;}
}void itoa(int n, char* charArr){int tmpN, i, sign;i = 0;sign = n;//循环do{charArr[i++] = abs(n % 10) + '0';}while (n /= 10);if(sign < 0){charArr[i++] = '-';}charArr[i] = '\0';//字符串逆转
    reverse(charArr);
}void main(){int n = INT_MIN;char charArr[MAX];itoa(n, charArr);printf("%s\n", charArr);
}

转载于:https://www.cnblogs.com/ningvsban/p/3803028.html

【C语言】字符串与整型数值之间的转换相关推荐

  1. 字符串,枚举,数值之间的转换

    public enum eErrorDetailCode : int {           登陆成功 = 0,            登出 = 1,            应用错误 = 2,     ...

  2. C语言实现字符串转整型

    C语言实现字符串转整型 要求 了解 基本思想 代码 求10的n次方函数 字符串s转换为整型函数 所有代码 不足 要求 1.输入中只包含正负号和数字. 2.正负号只只出现在首位. 了解 (1)负号Asc ...

  3. 1.2 String字符串和整型int的相互转换,valueOf() 、parse()和toString()

    String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的.前面部分主要讲解了 String 转换 int 和 int 转换 String 方法,后面部分对 va ...

  4. Java String字符串和整型int的相互转换

    String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的. String转换为int String 字符串转整型 int 有以下两种方式: Integer.pa ...

  5. Java教程:Java String字符串和整型int的相互转换

    Java教程String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的.本节前面部分主要讲解了 String 转换 int 和 int 转换 String 方法, ...

  6. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  7. C++ 整型转16进制字符串或16进制字符串转整型

    前言:整数转16进制字符串,网上大部分的资料都是要传入16进制字符串的位数,有点麻烦.本文介绍的方法自动确定返回的字符串的位数,位数为最小偶数.偶数位方便使用时转成字节数组(unsigned char ...

  8. C语言输出长长整型错误,c语言长整型定义

    我用long int怎么不行呢 基本定义形式为: long var_name = INIT_VALUE; 一. 长整型在C语言中类型关键字为long. 定义时,var_name为变量名. INIT_V ...

  9. Java 和 .NET 获得毫秒级长整型数值的差异和解决

    2019独角兽企业重金招聘Python工程师标准>>> 维护的某系统中有个用 Java 写的生成唯一标识的类,主要是靠"Calendar.getInstance().get ...

  10. sscanf操作字符串和整型的区别

    今天测试了一下,发现sscanf操作字符串和整型在格式上是有区别的,下面来看看.下面2个例子都是要取字符串对应的12347那段数字. 先看操作字符串的: int main() {char buf[10 ...

最新文章

  1. 一种注册表沙箱的思路、实现——注册表的一些基础知识
  2. 流行于机器学习竞赛的Boosting,这篇文章讲的非常全了
  3. 机器学习:线性回归简单有效,但是千万不要踩到雷区!
  4. PyTorch开源物体检测工具包
  5. 使用OpenSSL加密,使用Java解密,使​​用OpenSSL RSA公钥
  6. day 68 增删改查 语法
  7. Error: Java heap space
  8. jQ判断一个元素是否为空
  9. [转]JSP中常见的Tomcat报错错误解析(一)
  10. java的程序控制关键字_Java编程的关键字有哪些
  11. mysql防注入方法_防止SQL注入的六种方法
  12. 解决gitlab内置node_exporter提供外部prometheus使用
  13. Codeforces - Mike and Feet
  14. BZOJ3772精神污染
  15. 通过授权微信,达到软件登录账号的效果~~未完
  16. flvplayer.swf flv视频播放器使用方法
  17. 有道云APP(生成文档目录)
  18. SecureCRT for Linux
  19. HDU 5514 Frogs 容斥
  20. 【git】原理与.git文件夹解读

热门文章

  1. VMWare安装苹果Mac OS X
  2. axios.js post 后台木有数据
  3. Win10 安装 Linux 子系统
  4. 《超实用的HTML代码段》阅读笔记1——HTML5自动聚焦
  5. Untiy中的数据平滑处理
  6. 设置一个类似手机的锁屏界面但又不知道如何操作
  7. End Game----OO最后一次博客作业
  8. 跨域两种解决方案CORS以及JSONP
  9. javascript学习-常用内置对象
  10. coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)