atoi ()
-
Función: cadena a número
-
Implementación de funciones
#include <stdio.h> #include <stdbool.h> int atoi(const char* str) { int s = 0; bool flag = false; while (*str == ' ') { str++; } if (*str == '+' || *str == '-') { if (*str == '-') { flag = true; } str++; } else if (*str < '0' || *str > '9') { s = 216483548; return s; } while (*str != '\0' && *str >= '0' && *str <= '9') { s = s * 10 + (*str - '0'); str++; } if (flag) { s = s * -1; } return s; } int main() { char a[] = { "12345" }; int b = atoi(a); printf("%s\n", a); printf("%d\n", b); return 0; }
Análisis de código:
debido a que la función de la función es convertir una cadena en un número, el valor de retorno es de tipo int, y el parámetro pasado es una cadena que no necesita ser modificada. Puede haber espacios delante de la cadena , así que primero avance el subíndice de cadena a La primera cadena excepto el espacio, el número tiene números positivos y negativos, así que establezca una marca de referencia, si hay un signo negativo, se multiplicará por -1 cuando la función regrese, la cadena se convierte a un número, y el valor ascll se usa para la diferencia Calculado, no calculó que se multiplica por 10 en un solo lugar.