如果以下函数,您在使用的时候,总是输出一个莫名的值,是因为您忘记了引用头文件

#include <stdlib.h>

1- atoi

int atoi(const char *nptr);

把字符串转换成整型数。ASCII to integer 的缩写。

#include <stdio.h>
void funcAtoi(char *str)
{
float n;
n = atoi(str);
printf("str = %s, n = %f\n", str, n);
} int main()
{
char *str1 = "1234.567";
char *str2 = "你好";
funcAtoi(str1);
funcAtoi(str2);
system("PAUSE");
return -;
}

2- atol

long atol(const char *nptr);

把字符串转换成长整型数

 void funcAtol(char *str)
{
long n;
n = atol(str);
printf("str = %s, n = %ld\n", str, n);
} int main()
{
char *str1 = "1234.567";
char *str2 = "你好";
funcAtol(str1);
funcAtol(str2);
system("PAUSE");
return -;
}

3- strtod

strtod(将字符串转换成浮点数)

头文件:

#include <stdlib.h>

函数原型:

double strtod(constchar*nptr,char**endptr);

nptr:传入需要转换的字符串

endptr:接收字符串中无法转换的内容 例如以下红色字体部分 str = "hello",

atof主要的区别是:

strtod可以把输入的"123.456hello"拆分2部分返回,函数返回123.456,参数endptr返回hello

atof只可以返回"123.456hello"的数字部分,返回为123.456000 返回也是double类型

可以利用strtod函数处理数字字母组合的字符串.

 void funcStrtod()
{
char *str;
char *a = "12345.6789";
char *b = "1234.567hello";
char *c = "-123.23e4";
printf( "a = %.2lf\n", strtod(a,&str) );
printf( "str = %s\n", str );
9 printf( "b = %lf\n", atof(b));
10 printf( "b = %lf\n", strtod(b,&str) );
printf( "str = %s\n", str );
printf( "c = %lf\n", strtod(c,NULL) );
}

4- strtol

long int strtol(const char *nptr,char **endptr,int base);

nptr是需要转换的字符串

endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。

base代表采用的进制方式 10, 0表示10进制 16, 0x表示16进制 8, 0开始不是0x表示8进制

 主要特点: 可以读取2,4,8,16指定进制的数据.

 void funcStrtol()
{
char *str;
double x;
char *a = "0xf1hello world"; x = strtod( a, &str );
printf("a = %s\n", a );
printf("strtod = %f\n", x );
printf("Stopped scan at: %s\n\n", str ); x = strtol(a, &str, );
printf("a = %s\n", a );
printf("strtol = %f\n", x );
printf("base = %d\n", );
printf("Stopped scan at: %s\n\n", str );
}

返回值十进制 241 整好是十六进制0xf1

 5- strtoul

#include<stdlib.h>

unsigned long strtoul(const char *nptr,char **endptr,int base);

将字符串转换成无符号长整型数

例子:将十六进制 0xFF,转换成 10进制,得到 255

 void funcStrtoul()
{
char *a = "0xFF";
long n;
n = strtoul(a, NULL, );
printf("%d\n", n);
}

6- _gcvt

gcvt是把浮点数转换成字符串,同时返回一个指向字符串的存储位置的指针的函数。

char *gcvt(double value, int ndigit, char *buf);

 void func()
{
char str[];
double num;
int sig = ; /* significant digits */ num = 123456.02;
_gcvt(num, sig, str);
printf("\nstring = %s\n", str); /* a regular number */
num = 9.876;
_gcvt(num, sig, str);
printf("string = %s\n", str);
/* a negative number */
num = -123.4567;
_gcvt(num, sig, str);
printf("string = %s\n", str);
/* scientific notation */
num = 0.678e5;
_gcvt(num, sig, str);
printf("string = %s\n", str);
}

如果需要转换的值超过ndigit数,则使用科学计数法 && 四舍五入.

atoi atol strtod strtol strtoul _gcvt的更多相关文章

  1. strtol函數的用法 atof, atoi, atol, strtod, strtoul

    相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const ch ...

  2. 字符串转换atof atoi atol gcvt strtod strtol strto ul toascii tolower toupper

    atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double at ...

  3. c语言常用数据类型转换整理

    你要发送原始数据流 还是 格式化输出? 如果是格式化 按原子说的 ,用sprintf / printf; 如果发送原始内存数据流, 可按下面发送, 发送 #define BYTE0(pointer) ...

  4. c语言字符串 数字转换函数大全

    最近学数据结构老是做实验 常用到字符串和数字的转换 想找却发现网上的资料太散 所以搜集整理一下 方便以后再用 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转 ...

  5. Unix/Linux环境C编程入门教程(26) 字符数字那些事儿

    1.gcvt() strtod() strtol() strtoul() toascii() tolower() toupper函数介绍 gcvt(将浮点型数转换为字符串,取四舍五入) 相关函数 ec ...

  6. C语言中字符串如何转换为二进制、八进制、十进制、十六进制

    在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, st ...

  7. linux常用C函数目录

    字符测试篇 isalnum isalpha isascii iscntrl isdigit isgraphis islower isprint isspace ispunct isupper isxd ...

  8. So many good projects for studying C programming lanuage.

    Some one asked a question for studying C programming language on stackexachange.com. He got a bucket ...

  9. [C++]PAT乙级1005. 继续(3n+1)猜想 (25/25)

    /* 1005. 继续(3n+1)猜想 (25) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推 ...

随机推荐

  1. poj 3177

    第一道双联通的题目,求加几条边让原图成一个双联通图,求出度数为1的双联通分量的个数+1/2. Low[u]为u或u的子树中能通过非父子边追溯到的最早的节点,即DFS序号最小的节点的序号 #includ ...

  2. Dom兼容问题记录汇总

    DOM方法兼容表   Chrome FireFox IE6 IE7 IE8 IE9 IE10 innerText 支持 不支持(改成了textContent) 支持 支持 支持 支持 支持 inner ...

  3. 2015网易校招Java开发工程师(技术架构)在线笔试题

    1.  程序和进程的本质区别是? A.在外存和内存存储 B.非顺序和顺序执行机器指令 C.独占使用和分时使用计算机资源 D.静态和动态特征 参考答案分析: 进程与应用程序的区别: 进程(Process ...

  4. 开心菜鸟系列学习笔记------javascript(4)

    一.全局上下文中的变量对象:        1)全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象:这个对象只存在一份,它的属性在程序中任何地方都可以访问,全局对象的 ...

  5. javascript 之 location.href、跨窗口调用函数

    location.href这个东西常常用于跳转,location既是window对象的属性,又是document对象的属性. JavaScript hash 属性 -- 返回URL中#符号后面的内容 ...

  6. You don't seem to have 'make' or 'gmake' in your PATH

    标题尚的错误,不是原因,因为which make的时候是有显示/usr/bin/make的,echo $PATH的时候也是有make的路径的. 编译Qt  ./configure的时候出现标题上错误, ...

  7. Android ListView中带有时间数据的排序

    下面是activity: public class MainActivity extends Activity { private ListView mListView = null; private ...

  8. 嵌入式设备web服务器

    操作系统:ubuntu10.04 前言:    为了提高对设备的易操作性,很多设备中提供pc机直接通过浏览器操作设备的功能.这就需要在设备中实现web服务器.    现在在嵌入式设备中所使用的web服 ...

  9. 使用fdisk进行磁盘管理

    http://itercast.com/lecture/17 disk是来自IBM的老牌分区软件,几乎所有Linux系统均默认安装 fdisk是一个MBR分区工具,不可用于GPT分区 只有超级用户(r ...

  10. jQuery UI 之 LigerUI 快速入门

    LigerUI 快速开发UI框架 LigerUI 是基于jQuery 的UI框架,其核心设计目标是快速开发.使用简单.功能强大.轻量级.易扩展.简单而又强大,致力于快速打造Web前端界面解决方案,可以 ...