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

/*=============================================================================
#
# 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 = ;
for(i = ; s[i] >= '' && s[i] <=''; ++i){
n = * n + (s[i] - '');
}
return n;
} void main(){
char charArr[] = "";
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 = ;
k = strlen(charArr)-;
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 = ;
//判断是否为负数
if((sign = n) < ){
n = - n;
}
//循环
while(n > ){
tmpN = n % ;
n = n / ;
charArr[i++] = tmpN + '';
}
if(sign < ){
charArr[i++] = '-';
}
charArr[i] = '\0';
reverse(charArr);
} void main(){
int n = -;
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 = ;
k = strlen(charArr)-;
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 = ;
sign = n;
//循环
do{
charArr[i++] = abs(n % ) + '';
}while (n /= );
if(sign < ){
charArr[i++] = '-';
}
charArr[i] = '\0';
//字符串逆转
reverse(charArr);
} void main(){
int n = INT_MIN;
char charArr[MAX];
itoa(n, charArr);
printf("%s\n", charArr);
}

【C语言】字符串与整型数值之间的转换的更多相关文章

  1. 将int,bigint整型数值可逆转换字符串

    将 Int 和 BigInt 类型数值转换为字符串的可逆方法,可用于缩短网址或记录的ID转换等. 如: 9223372036854775807 => aZl8N0y58M7 class Conv ...

  2. Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型 1.返回顶部 1. 整型数值类型(C# 参考) 2019/10/22 “整型数值类型”是“简单类型”的 ...

  3. python字符串跟整型互转

    print ("整型:",int(50))a=int(50)print("整型:",a)numStr = "50";print (" ...

  4. java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?

    java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量? 整数值默认就是int类型,只有在数值常量后面加“L”或“l”才表明该常量是long型

  5. Python字符串,整型,浮点数相互转化

    Python字符串,整型,浮点数相互转化 觉得有用的话,欢迎一起讨论相互学习~Follow Me int(str) 函数将符合整数的规范的字符串转换成int型 float(str) 函数将符合浮点数的 ...

  6. sqlite 字符串 转 整型 cast 函数 (强制类型转换 )

    sqlite 字符串 转 整型使用 cast 函数 语法: cast(col_name as type) 例子: 表:JobInfo 表内字段:Salary  薪水 select * from Job ...

  7. Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法

    1. 要求 对List列表中的数据进行排序(正序.倒序),列表中的数据包括:整型(Integer).字符串(String).日期(Date)等.对于字符串,要求允许对它按照整型进行排序. 2. 实现思 ...

  8. java 字符串与整型相互转换

    如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer. parseInt ([String]); 或 i = Integer.parseInt ( ...

  9. 剑指offer-第七章面试案例1(字符串转换为整型)

    //将字符串转换为整型 //思路:特殊的输入测试: //1,考虑字符串是否为空.2.字符串问空的时候的返回0,和真实的返回0直键的区别.3,字符串中出现0~9的字符处理 //4.字符串中出现*,¥等一 ...

随机推荐

  1. easyui form load 数据表单有下拉框

    (function () { $('#text1').combobox({ url: 'http://localhost:5463/test/getComboJson' }) $('#text2'). ...

  2. Mysql中使用Group_Concat将列组合进来。

    一.上例子: ) as CityId,group_concat(stationId) ,NameCn from `wd-area` where type='cn3k' and areaId like ...

  3. Java和Javac的使用时总提示找不到类模块的解决方案

    1.场景: 争对网上的很多文章中javac编译与java运行的文章,有很多不明确的地方,使得在合适时发现很多坑.这里给大家作下简介. 2.Javac的使用注意: javac -d ./ ./Insta ...

  4. C#中将DLL文件打包到EXE文件

    1:在工程目录增加dll目录,然后将dll文件复制到此目录,例如: 2:增加引用,定位到工程的dll目录,选中要增加的dll文件 3:修改dll文件夹下面的dll文件属性 选中嵌入式资源,不复制. 4 ...

  5. logback debug 日志没有信息

    可能是项目绑定的日志不是logback的jar包,而是其他包,具体可查看tomcat启动日志 log4j:WARN No appenders could be found for logger (or ...

  6. Data De-duplication

    偶尔看到data deduplication的博客,还挺有意思,记录之 http://blog.csdn.net/liuben/article/details/5829083?reload http: ...

  7. emplace_back() 和 push_back 的区别(转)

    在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)的时候,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放 ...

  8. Knockout学习之控制流绑定器

    控制流绑定器 “foreach”绑定 顾名思义,通过该绑定我们就可以将监控数组循环输出到页面中去了,当然我们还是先来段简单的示例,仅仅只是输出监控数组: <ul data-bind=" ...

  9. SSM框架-使用MyBatis Generator自动创建代码

    参考:http://blog.csdn.net/zhshulin/article/details/23912615 SSM搭建的时候用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半 ...

  10. mysql配置和管理(转载)

    MySQL的配置与管理 (2012-08-09 13:06:59) 转载▼ 标签: mysql 配置 管理 分类: MySQL 安装 yum -y install mysql-server   启动服 ...