第8行,指针ptr指向字符串首地址,且用了const修饰,表明ptr是常量指针,只能指向常量,其指向的内容不可改变。这里是方便后面判断字符串的第一个字符是否是‘-’,以方便确定最终的转换结果是正数还是负数。
第10行,判断字符串第一个字符是否为‘+’或者‘-’,如果是二者之一,则应该从字符串的第二个字符开始转换。
第12行,while循环开始,首先判断每一个字符是否是数字,若不是,则跳出;是,则计算出数值。
第19行,判断字符串第一个字符是否是‘-’,如果是,则将上面算出来的数值取负。
结合上一篇《不使用库函数将数字转换为字符串》,可以总结出步骤:
数字转字符串:
1、将数字取绝对值;
2、判断被分配用于存储目标字符串的地址是否为空;
3、将每一个数字剥离出来,并转换为字符,存储于buf[]数组中(逆序);
4、根据数字的正负,确定目标字符串的长度;
5、将buf[]数组中逆序的数字型字符再次逆向复制到目标str[]数组中;
6、如果是负数,则还需令str[]数组的第一个字符为‘-’。
字符串转数字:
1、存储字符串的第一个字符,用于后面判断数字的正负;
2、如果字符串的第一个字符是‘+’或者‘-’,则需从第二个字符开始转换;
3、将每一个字符转换为数字,并累加起来;
4、根据字符串第一个字符是否为‘-’,判断数字的正负;
5、返回数字。