这是一个通用的基础程序,将数字字符串转换为整型数。
这个程序会去掉字符串开始的空格,并且能够转换带符号的整数。
该程序来自K&C的《C程序设计语言》一书。
程序如下:
/* 带符号的atoi,跳过前面的空格 */ #include <stdio.h> #include <ctype.h> int atoi(char s[]) { int n; int i; int sign; for(i=0;isspace(s[i]);i++) ; sign = (s[i]=='-')? -1:1; if(s[i] =='+'||s[i]=='-') i++; for(n=0;isdigit(s[i]);i++) n = n*10 + s[i]-'0'; n = sign * n; return n; } int main(void) { printf("%d ", atoi(" 356")); printf("%d ", atoi(" 1234567")); printf("%d ", atoi(" -356")); printf("%d ", atoi(" -1234567")); return 0; }关键代码:
#include <ctype.h> int atoi(char s[]) { int n; int i; int sign; for(i=0;isspace(s[i]);i++) ; sign = (s[i]=='-')? -1:1; if(s[i] =='+'||s[i]=='-') i++; for(n=0;isdigit(s[i]);i++) n = n*10 + s[i]-'0'; n = sign * n; return n; }
运行结果:
356
1234567
-356
-1234567