C当中有一些函数专门用于把字符串形式转换成数值形式。
printf()函数和sprintf()函数 -->通过转换说明吧数字从数字形式转换为字符串形式;
scanf()函数把输入字符串转换为数值形式;
应用场景:
编写程序需要使用数值命令形参,但是命令形参被读取为字符串。要使用数值必须先把字符串转换为数字。
atoi()函数:
int atoi(char *str);
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(void) 5 { 6 int i,times; 7 8 if(argc < 2 || times = atoi(argv[1])<1) 9 printf("Usage:%s positive-number ",argv[0]); 10 else 11 for(i=0;i<times;i++) 12 puts("Hello,good looking!"); 13 14 return 0; 15 }
程序运行示例:
$ 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);
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define LIM 30 4 char * s_gets(char * st, int n); 5 6 7 int main(void) 8 { 9 char number[LIM]; 10 char * end; 11 long value; 12 13 puts("Enter a number (empty line to quit);"); 14 while(s_gets(number,LIM)&& number[0] !='