【C语言】字符串与整型数值之间的转换
一.将字符串转化为对应的数值
/*=============================================================================
#
# 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语言】字符串与整型数值之间的转换的更多相关文章
- 将int,bigint整型数值可逆转换字符串
将 Int 和 BigInt 类型数值转换为字符串的可逆方法,可用于缩短网址或记录的ID转换等. 如: 9223372036854775807 => aZl8N0y58M7 class Conv ...
- Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型 1.返回顶部 1. 整型数值类型(C# 参考) 2019/10/22 “整型数值类型”是“简单类型”的 ...
- python字符串跟整型互转
print ("整型:",int(50))a=int(50)print("整型:",a)numStr = "50";print (" ...
- java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?
java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量? 整数值默认就是int类型,只有在数值常量后面加“L”或“l”才表明该常量是long型
- Python字符串,整型,浮点数相互转化
Python字符串,整型,浮点数相互转化 觉得有用的话,欢迎一起讨论相互学习~Follow Me int(str) 函数将符合整数的规范的字符串转换成int型 float(str) 函数将符合浮点数的 ...
- sqlite 字符串 转 整型 cast 函数 (强制类型转换 )
sqlite 字符串 转 整型使用 cast 函数 语法: cast(col_name as type) 例子: 表:JobInfo 表内字段:Salary 薪水 select * from Job ...
- Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
1. 要求 对List列表中的数据进行排序(正序.倒序),列表中的数据包括:整型(Integer).字符串(String).日期(Date)等.对于字符串,要求允许对它按照整型进行排序. 2. 实现思 ...
- java 字符串与整型相互转换
如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer. parseInt ([String]); 或 i = Integer.parseInt ( ...
- 剑指offer-第七章面试案例1(字符串转换为整型)
//将字符串转换为整型 //思路:特殊的输入测试: //1,考虑字符串是否为空.2.字符串问空的时候的返回0,和真实的返回0直键的区别.3,字符串中出现0~9的字符处理 //4.字符串中出现*,¥等一 ...
随机推荐
- 【BLE】CC2541之加入自己定义任务
本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文介绍怎样在SimpleBLEPeripheralproject中.加入一个香瓜任务. (香瓜任务与project原有任务相 ...
- SuperMap开发入门4——保存的坑
工作空间.地图等的打开.保存.删除是最基本的操作,可我居然卡在保存工作空间的问题上了. 功能需求 需求很简单:打开工作空间中的某一地图,缩放一下,保存地图.(下次打开时,已经缩放到上次修改过的地方) ...
- jQuery最简单的表单提交方式
第一步:绑定事件 常用的与ajax相关的事件参考如下: 1.$(selector).click(function) 2.$(selector).change(function) 3.$(selecto ...
- xpress for node 路由route几种实现方式
路由实现方式和顺序第二种路由写法第三种路由写法最佳 http://blog.csdn.net/mociml/article/details/11137571# http://blog.fens.me/ ...
- ububuntu配置ip和dns
装完ubuntu 第一件事情就是连上网,换个源,进行更新操作,但前提条件是要配好ip和dns. 下面把自己配置的过程记录下来,权且当作一份备份,以便不时之需. 一.配置ip ubuntu的网络配置信息 ...
- cmder、cmd、python 中文乱码问题
cmd下echo中文没有问题,但是进入python模式后就中文乱码,cmder更是echo也乱码 其实是要配置默认code page, cmd默认是ansi的编码,中文自然乱码 CMD chcp 65 ...
- C++ 推断一棵二叉树是否对称
一棵二叉树对称,就是说它假设以根为轴,翻转过去一样.例如以下图所看到的,以虚线为轴.把左边翻转到右边,各顶点及顶点中的值一一相应. watermark/2/text/aHR0cDovL2Jsb2cuY ...
- 使用Gulp
为什么要使用Gulp 在前端开发中通常须要做,预处理语言的编译.js文件的压缩.css文件的压缩.图片的压缩等一系列工作,而使用Gulp能够自己主动化的完毕这些工作,从而提高站点的开发效率,在我的博客 ...
- Android学习笔记六:六大布局
六大界面布局方式包括: 线性布局(LinearLayout).帧布局(FrameLayout).表格布局(TableLayout).相对布局(RelativeLayout).绝对布局(Absolute ...
- Java并发容器之CopyOnWriteArraySet与ConcurrentSkipListSet
一:CopyOnWriteArraySet CopyOnWriteArraySet底层其实是通过CopyOnWriteArrayList来实现的,通过组合一个CopyOnWriteArrayList作 ...