题目:将一个字符串转换成数字。例如:"123"-->123, "71.02"-->71.02.
方法一,直接调用库函数atoi(const char*) 和atof(const char*)
# include <stdio.h> # include <stdlib.h> int main () { int num_int; double num_double; char str_int[30] = "435"; //将要被转换为整型的字符串 char str_double[30] = "436.55"; //将要被转换为浮点型的字符串 num_int = atoi(str_int); //转换为整型值 num_double = atof(str_double); //转换为浮点型值 printf("num_int: %d\n", num_int); printf("num_double: %lf\n", num_double); return 0; } 输出结果: num_int: 435 num_double: 436.550000
方法二,自己实现
int str2int(const char *str) { int temp = 0; const char *ptr = str; //ptr保存str字符串开头 if (*str == '-' || *str == '+') //如果第一个字符是正负号, { //则移到下一个字符 str++; } while(*str != 0) { if ((*str < '0') || (*str > '9')) //如果当前字符不是数字 { //则退出循环 break; } temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值 str++; //移到下一个字符 } if (*ptr == '-') //如果字符串是以“-”开头,则转换成其相反数 { temp = -temp; } return temp; }