自定义C语言变量转换库

一、代码库如下

(一)字符串转int整数

// 把数字字符串转成整数

// 返回整数结果

int parseInt(char msg\[\]){

int offset = 0;

int total = 0;

// 默认是正数

int isPositive = 1;

// 第一个是符号,如果是+代表整数

if(msg0 == '+'){

offset++;

} else if (msg0 == '-'){

isPositive = 0;

offset++;

}

int k;

// 如果存在小数点

int isExistPoint = 0;

for(k = 0; msgk != '\0'; k++){

if(msgk == '.'){

isExistPoint = 1;

break;

}

}

// 如果存在小数点,返回0

if(isExistPoint){

return 0;

}

// 进行求值

for(k = offset; msgk != '\0'; k++){

total = (msgk - 48) + total * 10;

}

// 如果是负数,乘以-1

if(!isPositive){

total = total * (-1);

}

return total;

}

(二)字符串转long类型的整数

// 把数字字符串转成整数

// 返回整数结果

long parseLong(char msg\[\]){

int offset = 0;

long total = 0L;

// 默认是正数

int isPositive = 1;

// 第一个是符号,如果是+代表整数

if(msg0 == '+'){

offset++;

} else if (msg0 == '-'){

isPositive = 0;

offset++;

}

int k;

// 如果存在小数点

int isExistPoint = 0;

for(k = 0; msgk != '\0'; k++){

if(msgk == '.'){

isExistPoint = 1;

break;

}

}

// 如果存在小数点,返回0

if(isExistPoint){

return 0;

}

// 进行求值

for(k = offset; msgk != '\0'; k++){

total = (msgk - 48) + total * 10L;

}

// 如果是负数,乘以-1

if(!isPositive){

total = total * (-1);

}

return total;

}

// 把数字字符串转成无符号的长整数

// 返回整数结果

long parseUnsignedLong(char msg\[\]){

int offset = 0;

unsigned long total = 0L;

int k;

// 进行求值

for(k = offset; msgk != '\0'; k++){

total = (msgk - 48) + total * 10L;

}

return total;

}

(三)字符串转double类型的数

// 把浮点数字字符串转成浮点数

// 返回整数结果

double parseDouble(char msg\[\]){

int offset = 0;

double total = 0;

// 默认是正数

int isPositive = 1;

// 第一个是符号,如果是+代表整数

if(msg0 == '+'){

offset++;

} else if (msg0 == '-'){

isPositive = 0;

offset++;

}

int k;

// 记录小数点位置

int pointIndex = -1;

// 如果存在小数点

int isExistPoint = 0;

for(k = 0; msgk != '\0'; k++){

if(msgk == '.'){

isExistPoint = 1;

pointIndex = k;

break;

}

}

// 如果存在小数点,计算整数

if(isExistPoint){

int h = 0;

// 进行整数求值

for(h = offset; h < pointIndex; h++){

total = (msgh - 48) + total * 10.0;

}

// 进行小数部分求值

double unit = 1.0;

for(h = pointIndex + 1; msgh != '\0'; h++){

// 更新单位

unit = unit * 0.1;

total = total + (msgh - 48) * unit;

}

} else{

// 不存在小数点,全部算作整数

int n = 0;

for(n = offset; msgn != '\0'; n++){

total = (msgn - 48) + total * 10.0;

}

}

// 如果是负数,乘以-1

if(!isPositive){

total = total * (-1);

}

return total;

}

二、使用案例

#include<stdio.h>

int main(){

printf("把-55转成整数:%d", parseInt("-55"));

printf("把1155转成整数:%d", parseInt("1155"));

printf("把-1999888777转成整数:%ld", parseLong("-1999888777"));

printf("把44441225转成无符号整数:%ld", parseUnsignedLong("44441225"));

printf("把-5525.0转成浮点数:%lf", parseDouble("-5525.0"));

printf("把3.14156转成浮点数:%lf", parseDouble("3.14156"));

return 0;

}

相关推荐
维克兜率天7 分钟前
【维克】统计套利建模:从因子到信号的完整流程
android·开发语言·python·算法·kotlin
水饺编程7 分钟前
第2章:Linux 基础,echo 命令
linux·c语言·汇编
Pin_Qing12 分钟前
同一天,谷歌半价卖旗舰,阶跃翻倍收缓存
大数据·开发语言·人工智能·程序人生·缓存
2501_9307077817 分钟前
使用C#代码在 Word 文档中添加、插入或删除页面
开发语言·c#·word
没有梦想的咸鱼185-1037-166321 分钟前
从通量数据到SCI论文——AI-R语言生态系统碳水热通量及其机制分析与论文
开发语言·人工智能·数据分析·r语言
weixin_4617694027 分钟前
conda create 创建容器 Failed to resolve ‘repo.anaconda.com‘问题
开发语言·python·conda·repo·网络问题·无法创建
Want59529 分钟前
Python生日蛋糕
开发语言·python
晓蛋33 分钟前
C语言中定义常量为什么要加后缀
c语言·溢出·常量定义·后缀·类型限定
C语言小火车34 分钟前
C++ 为什么越来越依赖标准库?
java·开发语言·c++
郝学胜-神的一滴41 分钟前
金融数据分析实战:从数据清洗到策略回测,Python全链路落地
开发语言·python·程序人生·金融·数据挖掘·数据分析