这两个函数我十分陌生,当《C primer plus》里出现这题时:使用字符分类函数实现atoi();
我上网查了好久,其实并没有理解清楚它的存在有什么意义,是想方便地取出字符串里的数字吗?我以为是。于是去看了很多代码,很多代码都是这样定义:char a[]="15264";
字符数组里的元素都是数字符号。所以我以为是想什么时候可以更方便的把里面的字符状态的数字取出来吧。
于是我写了这样一个函数:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char a[10]={0};
char *p;
int i;
for(i=0;i<9;i++)
a[i]=getche();
a[i]='/0';
printf("%d/n",strtol(a,&p,10));
printf("%s/n",p);
return 0;
}
我并不知道如何将字符转换为数字,于是继续上google查,查到strtol()这个函数,它的定义如下;
long int strtol(const char *nptr,char **endptr,int base);
base确定了输出 的合法范围,例如,如果base=2;合法范围是'0''1';base=10;合法范围是'0' '1' '2' '3' '4' '5'……'9',粗俗一点地理解,base确定了字符数组中元素的进制型,而输出时转换为int 。
但还是不太理解。
发在博客里,以后再来看看吧。我要过章了。下一章:
存储类、链接、内存管理