C当中有一些函数专门用于把字符串形式转换成数值形式

printf()函数和sprintf()函数 -->通过转换说明吧数字从数字形式转换为字符串形式;

scanf()函数把输入字符串转换为数值形式;

应用场景:

编写程序需要使用数值命令形参,但是命令形参被读取为字符串。要使用数值必须先把字符串转换为数字。

atoi()函数

int atoi(char *str);

 #include <stdio.h>
#include <stdlib.h> int main(void)
{
int i,times; if(argc < || times = atoi(argv[])<)
printf("Usage:%s positive-number\n",argv[]);
else
for(i=;i<times;i++)
puts("Hello,good looking!"); return ;
}

程序运行示例:

$ hello 3

Hello, good looking!

Hello, good looking!

Hello, good looking!

作用就是根据参数,选择打印几次Hello, good looking!

如果参数开头是非数字字符,则atoi函数返回值是0;因为这种行为是未定义的。因此需要有错误检测功能的strtol()函数会更安全。

stdlib.h头文件:不仅包含atoi()函数,还包含了atof()函数、atol()函数;

atof()函数把字符串转换成double类型的值;

atol()函数把字符串转换成long类型的值;

++++++++++++++++++++++++++++++++++++++++++++++++++++++

strtol函数原型:long strtol(const char * restrict nptr,char ** restrict endptr, int base);

 #include <stdio.h>
#include <stdlib.h>
#define LIM 30
char * s_gets(char * st, int n); int main(void)
{
char number[LIM];
char * end;
long value; puts("Enter a number (empty line to quit);");
while(s_gets(number,LIM)&& number[] !='\0')
{
value =strtol(number,&end,);
printf("base 10 input,base 10 output:%ld,stopped at %s (%d)\n",value,end, *end);
value = strtol(number, &end, );
printf("base 16 input,base 10 output:%ld,stopped at %s (%d)\n",value,end, *end);
puts("Next number:");
}
puts("Bye!\n");
return ;
} char * s_gets(char * st, int n)
{
char * ret_val;
int i=; ret_val = fgets(st, n, stdin); //读取成功,返回一个指针,指向输入字符串的首字符;
if(ret_val)
{
while(st[i]!='\n' && st[i]!='\0')
i++;
if(st[i] =='\n') //fgets会把换行符也吃进来了,fgets会在末尾自动加上\0;
st[i]='\0';
else //其实是'\0'
while(getchar() != '\n') //会把缓冲区后续的字符都清空
continue;
}
return ret_val;
}

程序运行:

Enter a number (empty line to quit);
10
base 10 input,base 10 output:10,stopped at (0)
base 16 input,base 10 output:16,stopped at (0)
Next number:
10atom
base 10 input,base 10 output:10,stopped at atom (97)
base 16 input,base 10 output:266,stopped at tom (116)
Next number:

最新文章

  1. 【IDEA 2016】intellij idea tomcat jsp 热部署
  2. C#设计模式-原型模式
  3. Caring for our seniors
  4. [UCSD白板题] Number of Inversions
  5. maximum subarray problem
  6. [MS bug]安装SQL Server 2008 错误:is not a valid login or you do not have permission
  7. fancybox 关闭弹出窗口 parent.$.fancybox.close(); 无反应 fancybox 关闭弹出窗口父页面自动刷新,弹出子窗口前后事件
  8. shell复习笔记----用户管理
  9. Android自己定义控件之应用程序首页轮播图
  10. 重拾C++ 基础知识总结(二)
  11. git 如何让单个文件回退到指定的版本
  12. 我的TDD实践---SVN架设篇
  13. Dynamics CRM 2015Online Update1 new feature之 通过业务规则清空字段的值
  14. python3-列表字典简单练习题
  15. 在一般类中通过XmlWebApplicationContext对象获取应用部署上下文Context
  16. js 自定义类Android吐司提示框
  17. mac virtualbox 安装
  18. java并发里的一些基础概念
  19. 【转载】sql注入之入门
  20. C# 获得当前 进程 或 线程的ID

热门文章

  1. 【坑】idea+tomcat
  2. python的面向对象编程
  3. Android 数据库 OrmLite Failed to open database
  4. UWP蓝牙的例子
  5. 11.树形Model/View实例
  6. 数据结构 lucky_ming幸运的小明
  7. emr问题处理
  8. linux core文件机制
  9. 20169219《Linux内核原理与分析》课程总结
  10. [译]Javascript中的错误信息处理(Error handling)