编写函数atoi(char s[])和read_line(char str[], int n),将字符串转换为对应数值的整数
测试程序为:
#include <stdio.h>
#include <ctype.h>
#define STR_LEN 20
int read_line(char str[], int n); //n为字符串的长度,返回实际读入的字符个数
int atoi(char s[]);
int main()
{
char str[STR_LEN + 1];
read_line(str, STR_LEN);
printf("%d\n", atoi(str));
return 0;
}
#include <ctype.h>
#define STR_LEN 20
int read_line(char str[], int n) //第G题
{
int ch, i = 0;
while ((ch = getchar()) != '\n')
{
if (i < n - 1)
{
str[i] = ch;
i++;
}
}
str[i] = '\0';
return i;
}
int atoi(char s[])
{
int a=0, b=1, i=0;
while (s[i]==' '|| s[i]=='\t') //空格和'\t'跳过
{
i++;
}
if (s[i] == '-')
{
b = -1;
i++;
}
if (s[i] == '+')
{
i++;
}
while (s[i] != '\0')
{
if (s[i] >= '0' && s[i] <= '9')
{
a = a * 10 + (s[i] - '0');
}
else //只要出现字符就结束
{
break;
}
i++;
}
return a*b;
}
int main()
{
char str[STR_LEN + 1];
read_line(str, STR_LEN);
printf("%d\n", atoi(str));
return 0;
}